使用OpenSSL签发SSL证书
第一步:随机生成证书签发机构(CA)私钥
openssl genrsa -out ca_private.key 1024
第二步:将证书签发机构(CA)的公钥封装成CA证书
openssl req -new -x509 -days 30 -key ca_private.key -out ca.crt
第三步:随机生成待签发域名的私钥
openssl genrsa -out www.baidu.com.private.key 1024
第四步:生成证书签发请求文件
openssl req -new -key www.baidu.com.private.key -out www.baidu.com.csr
第五步:使用CA私钥签发证书
openssl ca -in www.baidu.com.csr -out /tmp/www.baidu.com.crt -cert ca.crt -keyfile ca_private.key
www.baidu.com.crt 就是最终签发的SSL证书,可用于部署https网站。以Nginx为例,部署https网站时需要SSL证书(www.baidu.com.crt)和RSA私钥(www.baidu.com.private.key)两个文件。
注意:OpenSSL默认配置在签发证书时,如果证书请求文件(csr)中含有中文,则在Windows上查看该证书时中文会显示乱码。
OpenSSL签发证书时遇到的问题:
1. 提示“The stateOrProvinceName field is different between ...”
解决方法:修改openssl默认配置文件(/usr/lib/ssl/openssl.cnf),根据情况将"countryName = match"这样的配置指令修改为:"countryName = supplied"。
2. 提示找不到 demoCA 文件
解决方法:需要在当前目录创建 demoCA 文件夹,并依次创建以下文件夹和文件:
demoCA index.txt 空文件 index.txt.attr 空文件 newcerts 空文件夹 private 空文件夹 serial 表示待签发证书的序列号,文件第一行是偶数个16进制数,如:32a6c4;第二行是空行。
...