liunx nginx配置ssl 配置https 及访问失败问题排查(fopen:No such file or )([emerg] the “ssl“ parameter requires)

心已赠人 2024-03-27 11:43 91阅读 0赞

liunx nginx配置ssl 配置https 及访问失败问题排查

目录

  • liunx nginx配置ssl 配置https 及访问失败问题排查
    • 一、提前准备
      • 1.ssl证书下载
      • 2.将ssl证书文件拷贝至服务器
      • 3.检查有没有ssl插件(nginx -V 中V大写)
        • 3.1如果没有ssl插件 就要切换到nginx安装包目录 执行命令了
    • 二、修改nginx配置
      • 1.编辑 Nginx 根目录下的 nginx.conf 文件。修改内
        • 1.1带注释版
        • 1.2不带注释版【可能粘贴的时候注释会导致格式错误】
      • 2.通过执行以下命令验证配置文件问题。
        1. 通过执行以下命令重载 Nginx。
        1. 重载成功,即可使用 https://cloud.tencent.com 进行访问。(自己的域名)
    • 三、可能遇到的问题 及解决方案
      • 1.找不到文件
      • 2.没有ssl插件
      • 3.端口号问题【配置正常没有报错,https却访问不了】
        • 3.1服务器内防火墙端口是否打开
        • 3.2.云服务器端口是否开发
      • 4.http如何自动跳转https
      • 5如果nginx不能在全局使用的话 可以拷贝到/bin
    • 参考链接

一、提前准备

1.ssl证书下载

在这里插入图片描述
比如腾讯云下载目录:
在这里插入图片描述

首先在网址(阿里云、腾讯云等)找到域名ssl下载,下载后解压里面有xxx.yey、xxx.pem、xxx.crt等文件
在服务器nginx配置里新建个文件夹,如我的nginx 在 /usr/local/nginx这个目录

  1. cd /usr/local/nginx/conf
  2. mkdir cert

2.将ssl证书文件拷贝至服务器

如:

  1. scp wys.cn.pem root@127.0.0.1:/usr/local/nginx/conf/cert
  2. scp wys.cn.key root@127.0.0.1:/usr/local/nginx/conf/cert
  3. scp wys.cn.crt root@127.0.0.1:/usr/local/nginx/conf/cert
  4. ·······

3.检查有没有ssl插件(nginx -V 中V大写)

  1. nginx -V

查询结果:

  1. ----有ssl插件
  2. nginx version: nginx/1.13.7
  3. built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
  4. built with OpenSSL 1.0.2k-fips 26 Jan 2017
  5. TLS SNI support enabled
  6. configure arguments: --with-http_ssl_module
  7. -----没有ssl插件
  8. nginx version: nginx/1.13.7
  9. built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
  10. configure arguments:
3.1如果没有ssl插件 就要切换到nginx安装包目录 执行命令了

【如果不是root用户 执行命令前加sudo ,如sudo cd xxx】
先备份nginx启动文件

  1. cd /usr/local/nginx/sbin/
  2. cp nginx nginx.bak

再添加插件 重新编译nginx启动文件【make 不能是make install,会覆盖之前的配置】
然后拷贝新文件

  1. cd /xxx/nginx-1.13.7
  2. ./configure --with-http_ssl_module
  3. make
  4. cp objs/nginx /usr/local/nginx/sbin/

二、修改nginx配置

1.编辑 Nginx 根目录下的 nginx.conf 文件。修改内

容如下:

1.1带注释版
  1. server {
  2. #SSL 默认访问端口号为 443
  3. listen 443 ssl;
  4. #请填写绑定证书的域名
  5. server_name cloud.tencent.com;
  6. #请填写证书文件的相对路径或绝对路径
  7. ssl_certificate cloud.tencent.com_bundle.crt;
  8. #请填写私钥文件的相对路径或绝对路径
  9. ssl_certificate_key cloud.tencent.com.key;
  10. ssl_session_timeout 5m;
  11. #请按照以下协议配置
  12. ssl_protocols TLSv1.2 TLSv1.3;
  13. #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
  14. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  15. ssl_prefer_server_ciphers on;
  16. location / {
  17. #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
  18. #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
  19. root html;
  20. index index.html index.htm;
  21. }
  22. }
1.2不带注释版【可能粘贴的时候注释会导致格式错误】
  1. server {
  2. listen 443 ssl;
  3. server_name cloud.tencent.com;
  4. ssl_certificate cloud.tencent.com_bundle.crt;
  5. ssl_certificate_key cloud.tencent.com.key;
  6. ssl_session_timeout 5m;
  7. ssl_protocols TLSv1.2 TLSv1.3;
  8. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  9. ssl_prefer_server_ciphers on;
  10. location / {
  11. root html;
  12. index index.html index.htm;
  13. }
  14. }

2.通过执行以下命令验证配置文件问题。

  1. nginx -t

正常返回:

  1. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  2. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

若存在,请您重新配置或者根据提示修改存在问题。
若不存在,请执行3.

3. 通过执行以下命令重载 Nginx。

  1. nginx -s reload

4. 重载成功,即可使用 https://cloud.tencent.com 进行访问。(自己的域名)

三、可能遇到的问题 及解决方案

1.找不到文件

  1. nginx -t
  2. nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/certt/wys.cn_bundle.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/certt/wys.cn_bundle.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
  3. nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

检查报错的文件路径是否和自己的文件路径不一致,修改正确即可。

2.没有ssl插件

  1. ./nginx -t
  2. nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:122
  3. nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

请按照 提前准备中的3.1步骤执行

3.端口号问题【配置正常没有报错,https却访问不了】

3.1服务器内防火墙端口是否打开

首先使用systemctl status firewalld命令检查是否开启防火墙,如为未开启要systemctl start firewalld启动

  1. systemctl status firewalld
  2. --如果未启动则执行启动(一般是启动的)
  3. systemctl start firewalld

然后使用命令开放443端口号。

  1. firewall-cmd --zone=public --add-port=443/tcp --permanent

最后使用

  1. firewall-cmd --reload

命令重新加载防火墙。

3.2.云服务器端口是否开发

登录云服务器,检查443端口是否正常开放
在这里插入图片描述

4.http如何自动跳转https

修改原来的80端口即可,修改后重新执行nginx -t和nginx -s reload

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. #charset koi8-r;
  5. #access_log logs/host.access.log main;
  6. #填写绑定证书的域名
  7. server_name wys.cn www.wys.cn;
  8. #把http的域名请求转成https
  9. return 301 https://$host$request_uri;
  10. # location / {
  11. # root html;
  12. # index index.html index.htm;
  13. # }

5如果nginx不能在全局使用的话 可以拷贝到/bin

如:

  1. cp /usr/local/nginx/sbin/nginx /bin

之后在任意目录下 即可执行nginx 如 【nginx -t】 前面不加./

参考链接

链接: 腾讯云官方 Nginx 服务器 SSL 证书安装部署文档
如果次篇文章对您有帮助的话,点个赞吧 谢谢!

发表评论

表情:
评论列表 (有 0 条评论,91人围观)

还没有评论,来说两句吧...

相关阅读