Nginx ssl

本文详细介绍如何在Nginx中配置SSL证书,包括获取Let's Encrypt免费证书、下载中间证书,并将多个证书文件合并为单一文件的过程。适用于解决PC端正常而移动端无法认证的问题。

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

 


Nginx配置ssl证书(中间证书)
在Nginx下配置ssl证书,默认的配置文件,在pc浏览器中正常访问,在手机浏览器中无法认证
--------------------------------------------------------------
http://blog.youkuaiyun.com/gudufeiyang/article/details/58603402
==============================================================




1)在这里生成证书 Let's Encrypt

 

 

https://www.sslforfree.com/create?generate&domains=www.bookshare.cc%20cloud.bookshare.cc%20api.cloud.bookshare.cc%20api.bookshare.cc%20static.bookshare.cc%20passport.bookshare.cc%20console.bookshare.cc

 

从这个网站下,最终能得到sslforfree.zip

里面有三个文件:  服务器证书certificate.crt   |   CA证书ca_bundle.crt   |  private.key


2)SSL 工具
下载中间证书,得到chain.crt

 

https://www.myssl.cn/tools/downloadchain.html

 

然后在这个网站,输入内容是:上面的服务器证书内容certificate.crt

会得到两个文件:中间证书chain.crt、根证书root.crt


3)合成certificate.crtchain.crt中的内容,得到certificate-all.crt


server{
  listen 443 ssl;
  charset utf-8;
  server_name  cloud.bookshare.cc  api.cloud.bookshare.cc  api.bookshare.cc  static.bookshare.cc  passport.bookshare.cc  console.bookshare.cc;
  ssl on; 
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
#ssl_dhparam /opt/dhparam/keys/dhparams.pem;
  ssl_certificate /usr/local/openresty/nginx/conf/sslforfree/certificate-all.crt;
  ssl_certificate_key /usr/local/openresty/nginx/conf/sslforfree/private.key;
}

<think>嗯,用户想了解如何在Nginx中配置SSL证书以及常见问题的解决方法。首先,我需要回忆一下Nginx配置SSL的基本步骤。根据之前的引用内容,安装依赖、生成私钥和CSR、获取证书、配置Nginx,然后测试和重启服务。这些步骤应该覆盖主要流程。 然后,常见问题可能包括证书路径错误、权限问题、协议版本过时、证书不匹配或者端口未开放。比如用户可能会遇到403错误,这时候需要检查证书文件的权限是否正确。还有可能配置语法错误,导致Nginx无法启动,这时候需要用nginx -t来测试配置。 另外,用户可能不知道如何生成自签名证书,或者申请CA证书的具体步骤。需要分点说明,生成私钥和CSR的命令,以及如何从CA获取证书。同时,强调配置文件中server块的设置,比如监听443端口、ssl_certificate和ssl_certificate_key的路径是否正确。 还要注意是否需要强制HTTPS跳转,这可以通过在80端口的server块中添加rewrite指令。另外,可能提到一些安全增强配置,比如启用HSTS、选择强密码套件等,但根据引用内容,可能暂时不需要深入,除非用户提到相关问题。 可能用户遇到的另一个问题是浏览器提示证书不受信任,这可能是因为自签名证书未被CA机构认可,所以建议使用受信任的CA颁发的证书。或者证书链不完整,需要配置中间证书。 测试部分,需要指导用户如何用curl或者openssl s_client检查SSL连接是否成功。还有检查防火墙是否开放了443端口,这个也是常见的问题。 最后,确保回答结构清晰,步骤明确,每个部分都分点说明,并引用提供的参考资料中的步骤,比如引用[1]提到的安装依赖,引用[3]中的生成密钥和CSR的过程,引用[2]的备份Nginx执行文件。同时,相关问题部分要引导用户进一步探索优化配置、证书续期等高级话题。</think>### 如何在Nginx中配置SSL证书及常见问题解决 #### **一、配置SSL证书步骤** 1. **安装Nginx依赖** 确保系统已安装Nginx所需依赖包(如`gcc`、`openssl`、`pcre`等)[^1]: ```bash yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel ``` 2. **生成私钥与证书签名请求(CSR)** 使用OpenSSL生成私钥(`private.key`)和CSR文件(`domain.csr`)[^3]: ```bash openssl req -newkey rsa:2048 -nodes -keyout private.key -out domain.csr ``` 根据提示填写域名、组织信息等。 3. **获取SSL证书** - **自签名证书**(仅测试用): ```bash openssl x509 -req -days 365 -in domain.csr -signkey private.key -out domain.crt ``` - **CA颁发证书**:将CSR提交至证书颁发机构(如Let’s Encrypt),获取签发的证书文件(如`domain.crt`)。 4. **配置Nginx** 编辑Nginx配置文件(如`/etc/nginx/nginx.conf`或站点配置文件): ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/domain.crt; # 证书路径 ssl_certificate_key /path/to/private.key; # 私钥路径 ssl_protocols TLSv1.2 TLSv1.3; # 推荐协议版本 ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件配置 # 其他配置(如静态资源路径、反向代理等) } ``` 配置后需备份原Nginx执行文件并重新加载配置[^2]: ```bash nginx -t # 测试配置语法 systemctl reload nginx ``` 5. **强制HTTPS跳转(可选)** 在80端口的server块中添加跳转规则: ```nginx server { listen 80; server_name example.com; return 301 https://$host$request_uri; } ``` --- #### **二、常见问题及解决方法** 1. **证书路径错误** - **现象**:Nginx启动失败,日志提示`SSL: cannot load certificate`。 - **解决**:检查`ssl_certificate`和`ssl_certificate_key`路径是否正确,确保文件权限为可读(如`chmod 644 *.crt`)。 2. **SSL协议版本不兼容** - **现象**:浏览器提示“不安全的连接”。 - **解决**:禁用旧协议(如TLSv1.0),仅保留`TLSv1.2`及以上版本[^3]。 3. **证书与域名不匹配** - **现象**:浏览器警告“证书无效”。 - **解决**:确保证书中`Common Name`或`Subject Alternative Name`与域名一致。 4. **443端口未开放** - **现象**:无法通过HTTPS访问。 - **解决**:检查防火墙规则,开放443端口: ```bash firewall-cmd --add-port=443/tcp --permanent firewall-cmd --reload ``` 5. **混合HTTP/HTTPS内容** - **现象**:页面部分资源加载失败。 - **解决**:确保所有静态资源(如图片、JS)使用相对路径或`https://`协议。 --- #### **三、测试与验证** - **命令行验证**: ```bash curl -I https://example.com # 检查响应状态码 openssl s_client -connect example.com:443 # 查看证书详细信息 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值