配置 Nginx SSL with Self-signed Certificate

本文转载自 http://www.jb51.net/article/45646.htm

如想更多了解 SSL/TLS, 可以参考 http://seanlook.com/2015/01/07/tls-ssl/

以下步骤创建一个 self-signed certificate, 用于测试环境设置. 生产环境中请使用 CA 中心颁发的证书.

第一步 使用openssl创建创建服务器私钥,输入相应提示的信息

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 加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢

第二步 创建证书签名请求(Certificate Signing Request (CSR))

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.

第三步 清除以 SSL 启动 Nginx 时提示必须输入密钥

cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key

openssl rsa 处理 RSA 密钥. 输入和输出分别是两个不同的文件. 这一步的目的是去除密钥中的密码.

第四步 使用刚生成的私钥和 CSR 进行证书签名

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 的配置中.

第五步 配置 Nginx 密钥

listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;

标签

归档