在 Mac OS 下,为 Nginx 创建自签名 SSL 证书
为方便开发,有时候我们也需要在本地的调试环境中配置 https,跟生产环境一致。以下介绍在 Mac OS系统中,创建自签名证书,并在 Nginx 中配置 Server。
1. 创建 openssl.cnf
复制 openssl.cnf
:
cp /System/Library/OpenSSL/openssl.cnf openssl.cnf
在 openssl.cnf
末尾添加以下2行。test.cpming.top
为我本地 hosts 的一个域名,也可以是其他域名,如localhost
。
[v3_ca]
subjectAltName = DNS:test.cpming.top
2. 创建 SSL 证书
创建存储证书的目录:
mkdir -p /usr/local/etc/ssl/private
mkdir -p /usr/local/etc/ssl/certs
创建密钥和证书对:
sudo openssl req \
-x509 -nodes -days 365 -newkey rsa:2048 \
-subj "/CN=test.cpming.top" \
-config openssl.cnf \
-keyout /usr/local/etc/ssl/private/self-signed.key \
-out /usr/local/etc/ssl/certs/self-signed.crt
3. 创建一个 Diffie-Hellman 密钥对
sudo openssl dhparam -out /usr/local/etc/ssl/certs/dhparam.pem 128
4. 配置 Nginx
配置一个 server,启用 80 和 443 端口,分别为 http 和 https 协议,重启 nginx 生效。
server {
listen 80;
listen 443 ssl;
server_name test.cpming.com;
ssl_certificate /usr/local/etc/ssl/certs/self-signed.crt;
ssl_certificate_key /usr/local/etc/ssl/private/self-signed.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_dhparam /usr/local/etc/ssl/certs/dhparam.pem;
...
}
5. 将自签名证书添加到受信任的根存储中
访问 http://test.cpming.top
。由于我们创建的证书不是由系统的受信任证书颁发机构之一签名的,因此浏览器应该会显示一个大警告符号,并警告您的连接不是私有连接。为了解决这个问题,我们需要将自签名证书添加到受信任的根存储中。运行以下命令。
sudo security add-trusted-cert \
-d -r trustRoot \
-k /Library/Keychains/System.keychain /usr/local/etc/ssl/certs/self-signed.crt