Nginx 本地配置ssl证书

发布于:2025-03-08 ⋅ 阅读:(159) ⋅ 点赞:(0)

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:验证证书是否有效

现在,重新访问你的站点,浏览器应该不再显示 “不安全” 的警告,证书应该被正确信任。

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到