第1步:生成私钥
有密码:openssl genrsa -des3 -out private.key 1024
无密码:openssl genrsa -out private.key 1024
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。
1024位RSA非对称密钥对已经变得不安全了,所以,美国国家标准技术研究院( NIST )要求停止使用不安全的1024位非对称加密算法。微软已经要求所有受信任的根证书颁发机构必须于2010年12月31日之前升级其不安全的1024位根证书到2048位和停止颁发不安全的1024位用户证书,12 月 31 日之后会把不安全都所有 1024 位根证书从 Windows 受信任的根证书颁发机构列表中删除!
而目前几乎所有自签证书都是1024位,自签根证书也都是1024位,当然都是不安全的。还是那句话:由于部署自签SSL证书而无法获得专业SSL证书提供商的专业指导,根本就不知道1024位已经不安全了。
第2步:生成CSR(证书签名请求)
openssl req -new -key private.key -out certrequest.csr
说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,
如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
第3步:生成CA自签证书
openssl x509 -req -in certrequest.csr -signkey private.key -out certificate.crt -extfile domain.ini -extensions ext
如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。
需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。
domain.ini是多域名配置列表,文件内容
[ ext ]
subjectAltName = @dns
[ dns ]
DNS.1 = my.com
DNS.2 = *.my.com
DNS.3 = mm.com
DNS.4 = tt.com
DNS.5 = localhost
DNS.6 = 127.0.0.1
第4步:创建pfx文件
openssl pkcs12 -export -in certificate.crt -inkey private.key -out certificate.pfx
第5步:解决浏览器提示不安全警告
将自建CA根证书加入到浏览器:因为我们不是官方的CA机构并没有内置在浏览器或系统中,所以浏览器会认为该CA非法,此时我们需要将我们自建CA的根证书加入到浏览器中。
Chrome :设置-设置-设置-高级-隐私设置和安全性-管理证书-导入
火狐:设置-选项-高级-证书-查看证书-证书机构-导入