ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux下的nginx配置ssl证书实现http跳转https

2022-09-14 00:05:40  阅读:310  来源: 互联网

标签:http nginx root ssl tencent 跳转 com cloud


操作场景说明:

  • 证书名称以cloud.tencent.com为例子。

  • Nginx 版本以 nginx/1.14.0 为例。

  • 当前服务器的操作系统为 CentOS 7.6,由于操作系统的版本不同,详细操作步骤略有区别。

  • 安装 SSL 证书前,请您在服务器上开启 “443” 端口,避免证书安装后无法启用 HTTPS。

    如果是腾讯云服务器,可以通过安全组开放443等常用端口。具体请查看https://cloud.tencent.com/document/product/213/39738。

  • 本次操作使用服务器为腾讯云服务器,操作前请确认使用root用户登录。

    [root@VM-12-2-centos ~]#
    

前提条件:

  • 已经拥有域名并且ICP备案成功。
  • 已经为域名申请SSL国际标准证书(RSA/ECC)。
  • 已准备远程连接工具,例如Xshell或者MobaXterm_Personal等(建议从官方网站获取最新版本,本次操作使用的是MobaXterm_Personal)。
  • 已在当前服务器中安装并配置 Nginx 服务。

操作步骤:

证书安装:

  1. 请在 SSL 证书管理控制台 中选择您需要安装的证书并单击下载

  2. 在弹出的 “证书下载” 窗口中,服务器类型选择Nginx,单击下载并解压缩cloud.tencent.com证书文件包到本地目录。

    解压缩后,可获得相关类型的证书文件。其中包含cloud.tencent.com_nginx文件夹:

    • 文件夹名称cloud.tencent.com_nginx

    • 文件夹内容

      • cloud.tencent.com_bundle.crt 证书文件
      • cloud.tencent.com_bundle.pem 证书文件(可忽略该文件)
      • cloud.tencent.com.key 私钥文件
    说明:CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件。
    
  3. 使用MobaXterm_Personal与服务器进行SSH连接。

  4. 将已获取到的 cloud.tencent.com_bundle.crt 证书文件和 cloud.tencent.com.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /usr/local/nginx/conf 目录(此处为 Nginx 默认安装目录,请根据实际情况操作)下。

  5. 修改nginx的配置文件nginx.conf。

    [root@VM-12-2-centos ~]# vim /usr/local/nginx/conf/nginx.conf
    
    server {
            #SSL 访问端口号为 443
            ssl on;
            listen 443; 
            #填写绑定证书的域名
            server_name cloud.tencent.com; 
            #证书文件名称
            ssl_certificate cloud.tencent.com_bundle.crt; 
            #私钥文件名称
            ssl_certificate_key cloud.tencent.com.key; 
            ssl_session_timeout 5m;
            #请按照以下协议配置
            ssl_protocols TLSv1.2 TLSv1.3; 
            #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
            ssl_prefer_server_ciphers on;
            location / {
               #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
               #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
                root html; 
                index  index.html index.htm;
            }
        }
    
    说明:
    由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。
    
  6. 在 Nginx 根目录下,通过执行以下命令验证配置文件问题。(nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful)出现表示成功。

    [root@VM-12-2-centos ~]# cd /usr/local/nginx
    [root@VM-12-2-centos nginx]# ./sbin/nginx -t
    
    • 若存在问题,请您重新配置或者根据提示修改存在问题。

    • 若不存在,请执行步骤7.

  7. 重启 Nginx,即可使用 https://cloud.tencent.com 进行访问。

    [root@VM-12-2-centos ~]# /usr/local/nginx/sbin/nginx -s reload
    

第6步可能遇到的问题:

问题解决方案来自:https://blog.csdn.net/weixin_34390105/article/details/92405829

故障:出现nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/ssl.conf:7

解决办法:

1.到解压的nginx目录下(是指最开始解压的文件,到该目录下有configure)。

[root@VM-12-2-centos ~]# cd /usr/local/nginx-1.14.0/
[root@VM-12-2-centos nginx-1.14.0]# ./configure --with-http_ssl_module

如果已经被删除就重新下载对应版本的Nginx

Nginx下载地址: https://nginx.org/en/download.html
先切换换导local目录下:cd /usr/local
下载1.14.0为例:wget https://nginx.org/download/nginx-1.14.0.tar.gz
解压命令:tar -zxvf nginx-1.14.0.tar.gz
进入nginx目录: cd nginx-1.14.0/
再执行命令:./configure --with-http_ssl_module

2.当执行上面语句,出现./configure: error: SSL modules require the OpenSSL library,如果没有请跳过该步骤。

[root@VM-12-2-centos nginx-1.14.0]# yum -y install openssl openssl-devel
[root@VM-12-2-centos nginx-1.14.0]# ./configure
[root@VM-12-2-centos nginx-1.14.0]# ./configure --with-http_ssl_module

3.执行make ,切记不能make install 会覆盖。

[root@VM-12-2-centos nginx-1.14.0]# make

4.把原来nginx备份,把新的nginx覆盖旧的。

[root@VM-12-2-centos nginx-1.14.0]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
[root@VM-12-2-centos nginx-1.14.0]# cp -rfp objs/nginx /usr/local/nginx/sbin/nginx

5.测试nginx是否正确

[root@VM-12-2-centos nginx-1.14.0]# /usr/local/nginx/sbin/nginx -t

(nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful)出现表示成功。

6.重启nginx,即可使用 https://cloud.tencent.com 进行访问。

[root@VM-12-2-centos nginx-1.14.0]# /usr/local/nginx/sbin/nginx -s reload

HTTP 自动跳转 HTTPS 的安全配置:

可参考:https://www.cnblogs.com/larrydpk/p/12819231.html

主要是修改nginx的配置文件nginx.conf。

[root@VM-12-2-centos ~]# vim /usr/local/nginx/conf/nginx.conf
server {
        #SSL 访问端口号为 443
        ssl on;
        listen 443; 
        #填写绑定证书的域名
        server_name cloud.tencent.com; 
        #证书文件名称
        ssl_certificate cloud.tencent.com_bundle.crt; 
        #私钥文件名称
        ssl_certificate_key cloud.tencent.com.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
            root html; 
            index  index.html index.htm;
        }
    }
    server {
    listen 80;
    #填写绑定证书的域名
    server_name cloud.tencent.com; 
    #把http的域名请求转成https
    return 301 https://$host$request_uri; 
	}

Nginx 支持 rewrite 功能,所以也可以使用:

 #把http的域名请求转成https
 # return 301 https://$host$request_uri;
 rewrite ^(.*)$ https://$host$1 permanent;

标签:http,nginx,root,ssl,tencent,跳转,com,cloud
来源: https://www.cnblogs.com/chandol/p/16691427.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有