首页 > 代码库 > Web Server CA证书签名步骤和自签名测试,支持多域名
Web Server CA证书签名步骤和自签名测试,支持多域名
Web Server支持HTTPS访问需要两个文件,私钥和证书。私钥和证书都放在服务器上,私钥用来加密数据,证书传递给客户端。自己签名的证书在传递给浏览器的时,因为证书不被信任,所以会弹出连接不安全,一般点高级->继续浏览,还是可以访问网页。如果我们的证书被根证书厂商签名过的话,就不会弹出不安全的提示,浏览器地址栏一般还有绿色小锁标志。以下来说一下怎么一步步生成证书。
1. 使用openssl生成私钥文件server.key,以下的步骤都是在Ubuntu上的使用openssl操作的,需要注意一下Ubuntu的系统时间,不要制作出来的证书是过期的。
openssl genrsa -out server.key 2048
2.1 修改 openssl.cnf,因为我之前在做这部分的时候,证书需要支持多个域名和 IP,所以才需要这个步骤,制作单域名证书可以不用修改配置文件。
2.2 拷贝openssl.cnf到当前目录
cp /etc/ssl/openssl.cnf ./
2.3 按以下修改拷贝过来的配置文件:
1> 在 [ req ] 块下取消注释行 req_extensions = v3_req
2> 确保[ req_distinguished_name ]下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
3> 在 [ v3_req ] 块下增加一行 subjectAltName = @alt_names
4> 在文件末尾增加如下信息:
[ alt_names ]
DNS.1 = www.liqingjht.com
DNS.2 = liqingjht.com
IP.1 = 192.168.1.105
IP.2 = 192.168.1.107
4>tip> 注意有没有www是不一样的域名,我在做证书请求CSR文件的时候,有 IP 的需求,不过在交给厂商签名的时候,厂商建议不加入 IP ,说是现在的标准逐渐不支持这种做法,因此我就没加上 IP 了,如果厂商支持的话,这么做应该是可以的,因为自己签名试了一下。
3.1 使用私钥和配置文件生成证书请求CSR文件server.csr,没有修改配置文件的不用写配置文件的参数
openssl req -new -key server.key -out server.csr -config ./openssl.cnf
3.2 生成CSR文件需要填写一些信息,Common Name填写主要域名,这个域名要在DNS.XX里
Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:FujianLocality Name (eg, city) []:XiamenOrganization Name (eg, company) [Internet Widgits Pty Ltd]:cnblogsOrganizational Unit Name (eg, section) []:cnblogsCommon Name (e.g. server FQDN or YOUR name) []:www.liqingjht.comEmail Address []:liqingjht@163.com
3>tip> server.csr 这个文件就是要拿给CA厂商签名的,server.key这个私钥文件自己保存好。拿给厂商签名后厂商会用他们的根证书前面这个CSR文件生成你服务器可用证书给你,在这之前我们可以自己充当CA厂商这个角色来测试一下。
4.1 要生成用来前面CSR文件的根证书,首先创建CA目录
mkdir ./demoCAmkdir demoCA/newcertstouch demoCA/index.txtecho 01 > demoCA/serial
4.2 生成ca.key,并自签名生成ca.crt证书,需要填写密码两次,如1234,填写的Common Name要和上面生成CSR文件一致。其他步骤一样,建议还是按照CSR文件那样填写就好了。这里时间可以看到签了两年。
openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config ./openssl.cnf
5. 使用自签署的CA证书签署服务器CSR证书请求,输入密码,一直按y就好了:
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf
6. 这时候当前目录有这几个文件:ca.key ca.crt server.key server.crt server.csr,其中server.key server.crt就是要放在服务器上的,ca.key相当于电脑内置的根证书。将ca.crt下载到pc上,在浏览器管理证书那里切到根证书那栏,将ca.crt导入进来,这时候你用 https访问openssl.cnf里填写的DNS.XX 或 IP.XX 就不会跳出不安全提示了。将CSR文件交给厂商签名就是因为厂商的CA证书有内置在浏览器里,所以即使没有手动导入,也不会出现不安全提示。
7.<未完待续,补充用dnsmasq和apache测试证书是否可用...>
Web Server CA证书签名步骤和自签名测试,支持多域名