本文转载自 http://www.jb51.net/article/45646.htm
如想更多了解 SSL/TLS, 可以参考 http://seanlook.com/2015/01/07/tls-ssl/
以下步骤创建一个 self-signed certificate, 用于测试环境设置. 生产环境中请使用 CA 中心颁发的证书.
openssl genrsa -des3 -out server.key 1024
openssl genrsa 生成一个 RSA private key. -des3 指定用 DES3 算法加密生成的 key, 生成时会提示用户输入一个密码. -out 指定输出到的文件. 1024 指定生成的 private key 的长度 (bit), 默认值为 512.
DES 算法为密码体制中的对称密码体制, 又被成为美国数据加密标准, 是 1972 年美国 IBM 公司研制的对称密码体制加密算法。其密钥长度为 56 位,明文按 64 位进行分组,将分组后的明文组和 56 位的密钥按位替代或交换的方法形成密文组的加密方法。DES 加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢
openssl req -new -key server.key -out server.csr
openssl req 生成一个新的 certificate 请求. 它会提示用户输入一些相关的信息, 比如国家, 地区, 公司等.
以下这段话摘自 Wikipedia, 简单解释了什么是 Certificate Signing Request
In Public Key Infrastructure (PKI) systems, a Certificate Signing Request (also CSR or certification request) is a message sent from an applicant to a Certificate Authority in order to apply for a digital identity certificate. It usually contains the public key for which the certificate should be issued, identifying information (such as a domain name) and integrity protection (e.g., a digital signature). The most common format for CSRs is the PKCS #10 specification and another is the Signed Public Key and Challenge SPKAC format generated by some Web browsers.
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key
openssl rsa 处理 RSA 密钥. 输入和输出分别是两个不同的文件. 这一步的目的是去除密钥中的密码.
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
这个命令使用 一个 CSR 和 RSA public key 对这个 RSA private key 进行自签名, 生成一个 certificate 文件. RSA private key 和 certificate 将用于 nginx 的配置中.
listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;