为Nginx添加HTTPS证书

本文介绍如何为网站部署HTTPS,包括在阿里云购买免费SSL证书、上传及配置证书到Nginx服务器的过程,并设置HTTP自动跳转HTTPS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本教程主要测试Nginx服务器,其他服务器如Apache等同理。

准备工作

  1. 一个已备案的域名,(测试域名为ianhe.me);
  2. 可供访问的外网服务器,如阿里云ECS。

您将得到的结果

为您的网站实现HTTPS,传输将更加的安全,Chrome浏览器输入地址(如:www.ianhe.me)后观察地址栏状态:

可查看证书信息:

1.准备证书文件

首先登录阿里云管理控制台-安全-证书服务,点击购买证书服务,进入证书购买页面(这里选择的是免费的证书服务),选择免费型DV SSL,显示证书品牌为Symantec,点击右侧立即购买购买此证书。

购买成功后在我的证书管理页面补全域名相关信息,等待供应商审核,审核完毕后点击右侧下载按钮下载证书文件(下载页面含有安装证书的说明)。
该文件为zip压缩文件,FTP或直接通过SSH上传至服务器Nginx根目录。

2. Nginx配置

进入Nginx根目录,创建一个空文件夹(如:sslkey)

将第一步准备好的证书zip文件解压缩至此目录,注:*.pem为证书文件,*.key为证书私钥文件,文件内容请勿修改。
修改nginx.conf文件,编辑server段,修改监听端口为443端口(HTTPS默认端口),开启ssl监听,参考如下详细配置:
需要注意ssl_certificatessl_certificate_key的路径必须填写正确,保存配置文件,重启nginx服务,去浏览器重新打开页面,输入地址:https://www.ianhe.me,查看结果。 如果觉得还要输入https很麻烦的话可以添加配置项,使得http请求默认跳转至https请求(见百度首页),在nginx.conf中添加一条server,具体配置如下:
这样在浏览器地址栏输入www.ianhe.me可直接跳转至https。

以上,第一次写教程,感谢简书。

转载于:https://juejin.im/post/5a31d34e5188255ea95bf5ce

<think>好的,我需要帮助用户了解如何在Nginx上配置HTTPS证书。首先,我应该回忆一下相关的步骤,并确保信息的准确性。根据用户提供的引用内容,有三个引用来源,可能需要结合这些内容来组织答案。 首先,用户的问题是关于Nginx配置HTTPS证书的教程。我需要分步骤解释整个过程,从安装SSL模块到配置证书,再到测试和重定向HTTP到HTTPS。同时,要确保每个步骤都清晰,并且语法正确,比如使用适当的命令和配置文件示例。 第一步,检查Nginx是否安装了SSL模块。根据引用[1],需要在nginx/sbin路径下执行./nginx -V,查看输出是否包含--with-http_ssl_module。如果没有,需要重新编译安装。这里可能需要详细说明如何重新编译,比如使用configure命令,然后make和make install。 第二步,准备SSL证书。引用[2]提到可以从阿里云或第三方购买,但用户可能需要生成自签名证书作为测试。这里需要给出生成自签名证书的命令,比如openssl req命令,并说明将证书文件放在哪里,如引用[3]中的/usr/local/nginx/conf/cert目录。 第三步,配置Nginx的虚拟主机。需要编辑nginx.conf文件,在server块中添加ssl_certificate和ssl_certificate_key的路径。同时,监听443端口,启用ssl。可能需要给出配置示例,包括server_name、root等设置,并确保语法正确。 第四步,测试配置和重启Nginx。使用nginx -t检查配置是否正确,然后使用nginx -s reload重启服务。这部分需要强调测试的重要性,避免配置错误导致服务中断。 第五步,设置HTTP重定向到HTTPS。这需要另一个server块监听80端口,并返回301重定向。引用中虽然没有直接提到,但这是常见的做法,应该包含在教程中。 最后,验证配置是否成功,可以通过访问https://域名,并检查浏览器是否有锁标志。同时,可能需要提醒用户防火墙设置是否开放443端口,以及证书的有效期问题。 在组织答案时,要使用用户指定的格式,比如行内数学公式用$...$,但这个问题可能不涉及数学公式,所以可能不需要。独立公式也没有必要。重点是将步骤分清楚,代码块用正确的语法高亮,比如使用python或bash,但这里应该用nginx的配置语法。 还要生成相关问题,可能涉及SSL证书类型、混合内容问题、证书自动续期等,结合用户提供的引用和常见问题。 需要确保引用标记正确,每个引用来源对应到正确的步骤。例如,检查SSL模块来自引用[1],证书上传路径来自引用[3],证书获取途径来自引用[2]。 现在,我需要按照这些思路组织一个结构清晰的回答,确保每个步骤都有对应的说明和示例配置,并引用正确的来源。同时,注意使用中文,避免专业术语错误,保持口语化但准确。</think>### Nginx HTTPS 证书配置教程 以下是配置Nginx HTTPS证书的详细步骤,结合SSL模块检查、证书准备及配置实现安全访问: --- #### **1. 检查SSL模块安装** 在配置前需确保Nginx已编译安装SSL模块。 - 进入Nginx的安装目录(例如`/usr/local/nginx/sbin`),执行命令: ```bash ./nginx -V ``` 若输出中包含`--with-http_ssl_module`,说明已安装[^1]。 **若未安装**:需重新编译Nginx添加SSL模块: ```bash ./configure --with-http_ssl_module make && make install ``` --- #### **2. 准备SSL证书** - **获取证书**:从阿里云、Let's Encrypt(免费)等平台申请证书,或生成自签名证书(测试用): ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt ``` - **上传证书**:将证书文件(`.crt`或`.pem`)和私钥文件(`.key`)上传至Nginx服务器,推荐目录: ```bash /usr/local/nginx/conf/cert/ ``` 确保文件权限正确(私钥建议设置为`600`)[^3]。 --- #### **3. 配置Nginx虚拟主机** 编辑Nginx配置文件(通常为`nginx.conf`或`/etc/nginx/sites-available/default`),在`server`块中添加以下内容: ```nginx server { listen 443 ssl; server_name your_domain.com; ssl_certificate /usr/local/nginx/conf/cert/server.crt; ssl_certificate_key /usr/local/nginx/conf/cert/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # 协议与加密套件配置(增强安全性) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; location / { root /var/www/html; index index.html index.htm; } } ``` --- #### **4. 测试配置并重启Nginx** - **检查语法**: ```bash nginx -t ``` - **重启服务**: ```bash nginx -s reload ``` --- #### **5. 设置HTTP自动跳转HTTPS** 在配置文件中添加以下`server`块,强制HTTP请求重定向到HTTPS: ```nginx server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; } ``` --- #### **6. 验证HTTPS生效** 访问`https://your_domain.com`,浏览器地址栏应显示锁形图标。可通过工具[SSL Labs测试](https://www.ssllabs.com/ssltest/)检查配置安全性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值