Nginx 本地配置ssl证书
主要为了本地使用https站点访问测试
本地linux 服务器环境为Centos7
本地安装mkcert证书工具
- 对于 Debian 或 Ubuntu 系统,你可以使用以下命令安装:
sudo apt update
sudo apt install mkcert
# 验证是否安装成功
mkcert --version
- 对于 Centos8 系统,你可以使用以下命令安装:
sudo dnf install mkcert
# 验证是否安装成功
mkcert --version
- 对于 Centos7 系统,需要手动安装:
wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
mv mkcert-v1.4.3-linux-amd64 /usr/local/bin/mkcert
chmod +x /usr/local/bin/mkcert
# 需要手动刷新一下bash配置
source ~/.bash_profile
# 验证是否安装成功
mkcert --version
- 安装 mkcert 依赖:根证书
mkcert 需要在系统中安装一个根证书,才能让你生成受信任的本地证书。安装根证书的步骤通常会在安装 mkcert 时自动完成,但你也可以手动执行:
mkcert -install
生成本地证书
这将为 dev.test01.com 创建一个 SSL 证书和密钥文件,默认文件名为:
dev.test01.com.pem(证书)
dev.test01.com-key.pem(私钥)
你可以用其他域名(如 localhost)或者使用通配符(如 *.example.com)来生成证书。比如:
- 创建 SSL 证书和密钥文件的命令如下:
mkcert dev.test01.com#执行如下
[18:40:20 root@centos8 dev.test01.com]#pwd
/etc/nginx/ssl/dev.test01.com
[18:40:23 root@centos8 dev.test01.com]#mkcert dev.test01.com
Created a new certificate valid for the following names 📜- "dev.test01.com"The certificate is at "./dev.test01.com.pem" and the key at "./dev.test01.com-key.pem" ✅It will expire on 6 June 2027 🗓[18:40:23 root@centos8 dev.test01.com]#ls
dev.test01.com-key.pem dev.test01.com.pem
Nginx 站点配置证书路径
server {listen 80;server_name dev.test01.com;index index.html index.htm index.php default.html default.htm default.php;root /usr/share/nginx/html/dev.test01.com;location ~ /\. {deny all;}location / {return 301 https://$host$request_uri; # http跳转https}access_log off;
}server{listen 443 ssl;server_name dev.test01.com ;index index.html index.htm index.php default.html default.htm default.php;root /usr/share/nginx/html/dev.test01.com;ssl_certificate /etc/nginx/ssl/dev.test01.com/dev.test01.com.pem; # 本地生成的证书ssl_certificate_key /etc/nginx/ssl/dev.test01.com/dev.test01.com-key.pem; # 本地服务器生成的证书秘钥ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";ssl_session_cache builtin:1000 shared:SSL:10m;access_log off;
}
把根证书安装到本地电脑
当你在虚拟机中使用 mkcert 生成的证书时,浏览器会提示证书不安全,通常是因为 浏览器并没有信任你在虚拟机中生成的证书。mkcert 默认生成的证书是由本地根证书机构签发的,但这个根证书并不会自动添加到其他设备(如你的实体机)中,因此浏览器无法验证证书的有效性。
为了解决这个问题,你需要将 mkcert 生成的 根证书 安装到本地机器的信任存储中。以下是解决这个问题的步骤:
步骤 1:导出并传输根证书
在虚拟机中使用 mkcert 生成的证书文件,包括根证书 rootCA.pem,通常位于 ~/.local/share/mkcert 或 ~/.mkcert 目录下。
导出并将 rootCA.pem 证书文件复制到实体机上。
cp ~/.local/share/mkcert/rootCA.pem /path/to/your/host/
或者,如果证书文件存放在其他目录,找到并传输 rootCA.pem。
步骤 2:在本地实体机上安装根证书
根据你使用的操作系统,安装根证书的方式略有不同。
- 对于 macOS:
双击 rootCA.pem 证书文件,它将会在 钥匙串访问 中打开。
选择将证书添加到 系统 钥匙串。
确保将证书的信任设置为 始终信任。
关闭钥匙串访问。 - 对于 Windows:
双击 rootCA.pem 文件,打开证书安装向导。
选择 将证书安装到受信任的根证书颁发机构。
按照提示完成安装。
安装后,重启浏览器。
注意:
rootCA.pem
如果在window下无法直接点击运行,可以把rootCA.pem
更改后缀名为rootCA.cer
再点击运行
- 对于 Linux:
将 rootCA.pem 证书复制到系统的证书目录(例如 /usr/local/share/ca-certificates/)。
sudo cp rootCA.pem /usr/local/share/ca-certificates/
运行以下命令更新证书存储:
sudo update-ca-certificates
重启浏览器。
步骤 3:清除浏览器缓存并重启
有时浏览器可能会缓存错误的证书信息,因此在安装根证书后,建议清除浏览器的缓存并重启浏览器。
步骤 4:验证证书是否有效
现在,重新访问你的站点,浏览器应该不再显示 “不安全” 的警告,证书应该被正确信任。