Nginx配置SSL证书

SSL证书用于加密网站信息传输,防止数据被窃取,同时帮助用户识别钓鱼网站。部署SSL证书能提升网站SEO排名,增强品牌形象和可信度。安装过程包括准备云服务器、域名及SSL证书,然后在Nginx配置中启用SSL并指定证书文件,最后重启服务。

一、SSL证书

SSL证书,就是遵守SSL安全套接层协议的服务器数字证书,由浏览器受信任的根证书颁发机构在验证服务器身份后颁发,具有网站身份验证和加密传输等功能。SSL证书并不是什么高深的技术产品,只需要成功申请下发后,安装到网站服务器即可。当你访问一个网站时,如果发现浏览器的地址栏中显示的是“https://”(绿色小锁图标),就说明这个网站已经安装部署了SSL证书。
网站安装SSL证书到底有哪些好处呢?简单整理几条给大家:
一、确保网站用户隐私信息安全
网站部署SSL证书后让网站实现加密传输,可以很好的防止用户隐私信息如用户名、密码、交易记录、居住信息等被窃取和纂改等现象。比如电商网站安装SSL证书,就可以有效保障你登录电商网站支付时提交的用户名密码的安全。
二、帮助用户识别钓鱼网站
部署SSL证书可以认证服务器真实身份,用户可以有效的区别钓鱼网站和官方网站。当网站部署全球信任的如Comodo 等SSL证书后,浏览器内置安全机制,实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。
三、利于网站SEO优化
由于部署了SSL证书的网站相比没有部署SSL证书的网站更加可信,更加安全,可以有效的保障用户的利益不受侵害。所以搜索引擎如谷歌,百度都站在确保用户信息安全的角度,都在大力倡导网站部署SSL证书实现HTTPS加密访问,故部署SSL证书的网站更利于优化。
四、提升公司品牌形象和可信度
优质的公司形象可以吸引更多的用户,当网站部署SSL证书后,让您的网站与其他网站与众不同。部署了SSL证书的网站会在浏览器地址栏显示HTTPS绿色安全小锁,如果是部署的EV SSL证书还会显示绿色地址栏和单位名称。可告诉用户其访问的是安全、可信的站点,可以放心的进行操作和交易,有效提升公司的品牌信息和可信度。

二、准备工作

1、首先得有自己的一台云服务器,需要在后台把443端口开放。

2、购买一个域名(腾讯云、阿里云都行),.com的域名需要备案,其他的不需要备案但是也能访问,可能不稳定。

3、在腾讯云、阿里云申请一个SSL证书,有免费版的,然后下载下来如图。

三、具体实现

步骤一:首先把下载下来的证书在Nginx文件夹里面的两个文件,拷贝到nginx安装目录下的conf文件夹中

 

步骤二:打开我们nginx.conf配置,往下翻,看到如下配置,默认是注释掉了。

              1、server_name 设置对应监听的域名

              2、ssl_certificate、 ssl_certificate_key ,设置两个对应的文件名,就是我们刚刚拷贝来的两个文件。

              3、显示的页面根据自己的要求设置,不设置默认跳转到Nginx Welcome页面。

server {
		 #SSL 访问端口号为 443
		 listen 443 ssl; 
		 #填写绑定证书的域名
		 server_name xxx.com; 
		 #启用 SSL 功能
		 #ssl on;
		 #证书文件名称
		 ssl_certificate xxx.crt;
		 #私钥文件名称
		 ssl_certificate_key xxx.key;
		 
		 ssl_session_timeout 5m;
		 #请按照以下协议配置
		 #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
		 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
		 #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
		 #ssl_prefer_server_ciphers on;
		 location / {
            root   D:/project/web;
            index  index.html;
			location / {
                try_files $uri $uri/ /index.html;
			}
			client_max_body_size 100m;
        }
	 }

步骤三:重新启动Nginx服务。

<think> 我们参考之前的引用内容,整理Nginx配置SSL证书的详细步骤。根据引用[1]-[5],配置步骤大致如下: 1. 准备SSL证书文件(通常包括.crt或.pem证书文件和.key私钥文件) 2. 将证书文件上传到服务器指定目录(如Nginx安装目录下的cert目录) 3. 修改Nginx配置文件(通常为nginx.conf),在需要启用HTTPS的server块中配置SSL相关参数 4. 测试配置文件并重启Nginx 下面我们详细说明每一步: ### 📌 一、准备工作 1. **获取SSL证书**: - 可以从证书颁发机构(CA)购买,或使用Let's Encrypt等免费证书。 - 证书通常包括两个文件:证书文件(例如:`your_domain.crt` 或 `your_domain.pem`)和私钥文件(例如:`your_domain.key`)。 2. **上传证书文件**: - 将证书文件和私钥文件上传到服务器的某个目录,推荐放在Nginx的安装目录下的`conf/cert`目录(如果没有则创建): ```bash # 创建cert目录 sudo mkdir -p /usr/local/nginx/conf/cert ``` - 将证书文件(例如:`your_domain.crt`)和私钥文件(`your_domain.key`)上传至该目录。 ### ⚙️ 二、配置Nginx 1. **打开Nginx配置文件**: - 通常位于`/usr/local/nginx/conf/nginx.conf`(源码安装)或`/etc/nginx/nginx.conf`(包安装)。 - 使用文本编辑器(如vim)打开: ```bash sudo vim /usr/local/nginx/conf/nginx.conf ``` 2. **配置HTTPS server块**: - 在配置文件中,找到或添加一个`server`块,监听443端口,并配置SSL参数。参考引用[2][3][4][5]: ```nginx server { # 监听443端口并启用SSL listen 443 ssl; server_name your_domain.com; # 替换为你的域名 # 指定证书和私钥文件的路径 ssl_certificate cert/your_domain.crt; # 相对路径相对于Nginx配置文件目录,或使用绝对路径 ssl_certificate_key cert/your_domain.key; # 优化SSL配置 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; # 推荐使用TLS1.2及以上 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; # 其他配置(如根目录、代理等) location / { root html; index index.html index.htm; } } ``` - 注意: - `ssl_certificate`和`ssl_certificate_key`指向的文件路径必须是正确的。如果使用相对路径,则是相对于Nginx配置文件所在的目录。 - `server_name`必须与证书的域名一致。 3. **(可选)HTTP重定向到HTTPS**: - 为了让用户访问HTTP(80端口)自动跳转到HTTPS,可以添加以下server块: ```nginx server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; # 永久重定向 } ``` ### ✅ 三、测试与重启 1. **测试配置文件**: - 在重启之前,务必检查配置文件的语法是否正确: ```bash sudo nginx -t ``` - 如果显示`syntax is ok`和`test is successful`,则说明配置正确。 2. **重启Nginx服务**: - 使用以下命令重启Nginx以使配置生效: ```bash sudo nginx -s reload # 平滑重启,不中断服务 ``` 或 ```bash sudo systemctl restart nginx # 如果使用systemd管理 ``` ### 🔍 四、验证HTTPS - 在浏览器中访问 `https://your_domain.com`,查看浏览器地址栏是否有锁形图标,表示连接安全。 - 也可以使用在线工具如 [SSL Labs SSL Test](https://www.ssllabs.com/ssltest/) 检测SSL配置安全性。 ### 📚 引用说明 以上步骤参考了引用[1]-[5]中关于Nginx配置SSL证书的方法,特别是证书路径配置SSL参数优化等关键点[^1][^2][^3][^4][^5]。 --- §§ 相关问题 §§ 1. 如何申请免费的Let's Encrypt SSL证书? 2. Nginx如何配置多域名SSL证书? 3. 如何配置HTTP/2以提升HTTPS性能? 4. SSL证书失效后如何自动续期? </think> ### 🔒 Nginx 配置 SSL 证书详细指南 以下步骤基于主流证书类型(PEM/CRT)整理,结合安全最佳实践和引用内容,配置过程约需 10 分钟: --- #### 📋 **一、准备工作** 1. **证书文件准备** - 从证书机构(如 Let's Encrypt)获取证书文件: - **证书文件**:`your_domain.crt` 或 `your_domain.pem` - **私钥文件**:`your_domain.key` - 上传至服务器(推荐目录): ```bash sudo mkdir -p /usr/local/nginx/cert # 创建证书目录 sudo cp your_domain.* /usr/local/nginx/cert/ # 上传文件 ``` 2. **备份配置文件** ```bash sudo cp /usr/local/nginx/conf/nginx.conf nginx.conf.bak # 备份原配置 ``` --- #### ️ **二、修改 Nginx 配置** 编辑配置文件(通常位于 `/usr/local/nginx/conf/nginx.conf`): ```nginx server { listen 443 ssl http2; # 启用 SSL 和 HTTP/2 server_name your_domain.com; # 替换为你的域名 # SSL 证书路径(绝对路径更安全) ssl_certificate /usr/local/nginx/cert/your_domain.pem; ssl_certificate_key /usr/local/nginx/cert/your_domain.key; # 优化 SSL 协议配置(禁用不安全版本) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # 会话缓存优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; # 禁用 Tickets 防重放攻击 # 安全头设置(HSTS 等) add_header Strict-Transport-Security "max-age=63072000" always; location / { root html; index index.html index.htm; } } # HTTP 强制跳转 HTTPS(可选但推荐) server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; # 301 永久重定向 } ``` > 📌 **关键参数说明**: > - `ssl_certificate`:证书链文件(PEM格式)[^1][^3][^4] > - `ssl_ciphers`:禁用弱加密算法(如 MD5/RC4)[^3][^4] > - `HSTS 头`:强制浏览器使用 HTTPS 连接[^1] --- #### ✅ **三、验证与生效** 1. **测试配置语法** ```bash sudo nginx -t # 出现 "syntax is ok" 即有效 ``` 2. **重启 Nginx 服务** ```bash sudo nginx -s reload # 平滑重启(不停机) ``` 3. **验证证书状态** ```bash echo | openssl s_client -connect your_domain.com:443 | openssl x509 -noout -dates # 输出证书有效期即成功 ``` --- #### 🔍 **四、高级安全加固** ```nginx # 在 SSL 配置块中添加: ssl_dhparam /usr/local/nginx/cert/dhparam.pem; # 增强前向保密性 ssl_ecdh_curve secp384r1; # 使用更强的椭圆曲线 ssl_stapling on; # OCSP 装订加速验证 ``` 生成 DH 参数文件: ```bash sudo openssl dhparam -out /usr/local/nginx/cert/dhparam.pem 2048 ``` --- ### 📚 **常见问题排查** | **问题现象** | **解决方案** | |-------------------------|---------------------------------------| | `SSL_CTX_use_certificate` 错误 | 检查证书路径和权限(需 600 权限)[^5] | | 浏览器提示 "证书不受信任" | 确保证书链完整(包含中间证书)[^1] | | TLS 协议不支持 | 检查 `ssl_protocols` 是否含 TLSv1.2+ | > 💡 通过 [SSL Labs 测试](https://www.ssllabs.com/ssltest/) 可全面评估配置安全等级。 --- ### 🌐 相关问题 1. 如何免费获取 Let's Encrypt SSL 证书并自动续期? 2. Nginx 如何同时支持 HTTP/2 和 SSL 加速? 3. 多域名场景下如何配置 SAN 或通证书? 4. 如何通过 Nginx 实现 SSL 双向认证(mTLS)? > 配置参考:证书路径声明[^2][^4]、加密套件选择[^3][^5]、会话优化[^1][^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunyanchun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值