在Nginx中部署国密证书,创建目录和上传文件是核心步骤。通常,你需要先在Nginx配置目录下创建一个专门存放证书的文件夹,然后将证书文件上传进去。
请注意:官方版Nginx默认不支持国密算法。在开始前,请确保你已安装或自行编译了支持国密(SM2)的Nginx版本。
以下是基于Linux和Windows系统的通用操作指南。
1. 准备工作:下载证书文件
从你的证书服务商(如DNSPod、Wotrus、阿里云等)处下载证书文件包。解压后,通常你会得到专为Nginx准备的文件夹。
国密证书通常包含签名证书和加密证书两部分。你需要找到以下四个核心文件(文件名可能略有不同):
`your_domain_sign.crt` (签名证书)
`your_domain_sign.key` (签名证书私钥)
`your_domain_encrypt.crt` (加密证书)
`your_domain_encrypt.key` (加密证书私钥)
2. 创建证书目录
在Nginx的配置目录下,新建一个文件夹用于存放证书。你可以根据习惯命名,例如 `ssl`、`cert` 或 `sm2_cert`。
Linux系统:Nginx配置目录通常在 `/usr/local/nginx/conf`或 `/etc/nginx`。
bash
进入Nginx配置目录 (请根据实际路径调整)
cd /usr/local/nginx/conf
创建名为 sm2_cert 的目录
mkdir sm2_cert
其他常见的目录名称有 `ssl`、`cert`等。
Windows系统:Nginx配置目录通常在 `C:\nginx-1.24.0\conf`。
1. 打开文件资源管理器,进入Nginx安装目录下的 `conf` 文件夹。
2. 右键点击,选择“新建” -> “文件夹”,命名为 `ssl` 或 `cert`。
3. 上传证书文件
将第一步准备好的四个证书文件(`.crt`和`.key`)上传到刚刚创建的目录中。
Linux服务器:
SCP命令:在本地终端使用 `scp` 命令。
bash
将本地的证书文件上传到服务器的 /usr/local/nginx/conf/sm2_cert/ 目录
scp /本地路径/your_domain_sign.crt root@你的服务器IP:/usr/local/nginx/conf/sm2_cert/
SFTP工具:使用如 WinSCP、FileZilla 等图形化工具,通过SFTP协议连接到服务器,然后将文件从本地拖拽到远程目录。
云服务商控制台:如果服务器在云上,也可以使用云服务商提供的文件上传功能。
Windows服务器:
使用 远程桌面连接,在本地和远程服务器之间直接复制粘贴文件。
使用 WinSCP 等支持SFTP的工具进行上传。
4. 设置文件权限(仅限Linux)
为确保Nginx进程能正常读取私钥文件,建议设置合理的权限。
bash
进入证书目录
cd /usr/local/nginx/conf/sm2_cert
设置私钥文件权限为仅所有者可读写 (600)
chmod 600 *.key
设置证书文件权限为所有者可读写,其他人可读 (644)
chmod 644 *.crt
5. 配置Nginx并验证
完成上述步骤后,你需要在Nginx的配置文件(通常是 `nginx.conf`)中,将 `ssl_certificate` 和 `ssl_certificate_key` 等指令指向这些文件。配置完成后,重启Nginx并访问网站验证证书是否生效。
总结
整个过程的核心要点如下:
步骤 Linux系统 Windows系统
创建目录 使用 `mkdir` 命令在 `/usr/local/nginx/conf/` 等路径下创建,如 `sm2_cert`。 在 `C:\nginx-1.24.0\conf\` 等路径下,通过文件管理器新建文件夹。
上传文件 使用 `scp` 命令、WinSCP 等SFTP工具。 使用远程桌面复制粘贴,或 WinSCP 等工具。
文件权限 务必设置,使用 `chmod 600 *.key` 命令。 通常无需额外操作。
如果遇到问题,可以检查以下几点:
确认Nginx是否为国密版本。
检查 `nginx.conf` 中证书文件路径是否正确。
确保服务器443端口已开放。