相关推荐recommended
Nginx服务器上安装SSL证书
作者:mmseoamin日期:2024-02-02

Nginx服务器上安装SSL证书

  • 1、前提条件
  • 2、nginx安装http_ssl_module模块
    • 2.1 查看是否安装过http_ssl_module
    • 2.2 进入nginx源文件目录
    • 2.3 重新编译nginx
    • 2.4 用新的nginx覆盖旧的
    • 3、https配置(SSL证书安装)
      • 3.1 下载证书文件和密钥文件
      • 3.2 服务器上创建cert文件夹
      • 3.3 配置nginx.conf
      • 3.4 设置http请求自动跳转https
      • 3.5 重启测试

        1、前提条件

        • 服务器已经开启了443端口(HTTPS服务的默认端口)
        • 服务器上已安装了http_ssl_module模块

          2、nginx安装http_ssl_module模块

          2.1 查看是否安装过http_ssl_module

          进入nginx安装目录执行如下命令

          ./nginx -V
          

          Nginx服务器上安装SSL证书,image-20230203201709162,第1张

          若出现“–with-http_ssl_module”说明已经安装过,否则继续执行下列步骤

          2.2 进入nginx源文件目录

          cd /usr/local/nginx/nginx-1.18.0/
          

          Nginx服务器上安装SSL证书,image-20230203201525419,第2张

          2.3 重新编译nginx

          ./configure --with-http_ssl_module
          

          Nginx服务器上安装SSL证书,image-20230203201853943,第3张

          再执行如下命令:

          make
          

          Nginx服务器上安装SSL证书,image-20230203202039509,第4张

          这里一定不要执行make install,否则会覆盖掉原来的nginx

          2.4 用新的nginx覆盖旧的

          会多一个objs文件

          Nginx服务器上安装SSL证书,image-20230203202122559,第5张

          Nginx服务器上安装SSL证书,image-20230203202141850,第6张

          执行覆盖命令(先停止nginx,./nginx -s stop)

           cp ./objs/nginx /usr/local/nginx/sbin/
          

          3、https配置(SSL证书安装)

          3.1 下载证书文件和密钥文件

          我自己用的百度云的免费SSL证书,下载证书,这里格式选择PEM_Nginx

          Nginx服务器上安装SSL证书,image-20230203202511637,第7张

          解压完之后有两个文件,如下所示。

          Nginx服务器上安装SSL证书,image-20230203202552868,第8张

          • 证书文件(以.cer或crt为后缀或文件类型)
          • 密钥文件(以.key为后缀或文件类型)

            3.2 服务器上创建cert文件夹

            在nginx的安装目录创建cert文件夹,并将下载的证书文件,和密钥文件拷贝到cert目录中。

            这里我创建到了nginx/conf下面了,这是试了好几次报错后的结果。

            Nginx服务器上安装SSL证书,image-20230203202827480,第9张

            3.3 配置nginx.conf

            打开Nginx安装目录 > conf文件夹 > nginx.conf文件,在nginx.conf文件中找到以下属性

            Nginx服务器上安装SSL证书,image-20230203202918800,第10张

            将注释放开,并修改内容如下:

             # 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
                server {
                    listen 443 ssl;
                    server_name codeleader.top;  # localhost修改为您证书绑定的域名。
                    # ssl on;   #设置为on启用SSL功能。
                    root html;
                    index index.html index.htm;
                    ssl_certificate cert/codeleader.top.crt;   #将domain.pem替换成您证书的文件名。
                    ssl_certificate_key cert/codeleader.top.key;   #将domain.key替换成您证书的密钥文件名。
                    ssl_session_timeout 5m;
                    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
                    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
                    ssl_prefer_server_ciphers on;
                    location / {
                        proxy_pass http://halo;
                        proxy_set_header HOST $host;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    }
                }
            

            这里我并没有隐藏我的域名,希望懂行的大佬不要恶意攻击,我也只是用服务器部署小项目测试,并不是生产服务器,攻击对您也没啥收益。

            3.4 设置http请求自动跳转https

            在需要跳转的http站点下添加以下rewrite语句,实现http访问自动跳转到https页面

            #设置http请求自动跳转https
            rewrite ^(.*)$ https://$host permanent;
            

            Nginx服务器上安装SSL证书,image-20230203203321180,第11张

            3.5 重启测试

            ./nginx -s reload
            

            证书安装完成后,可通过登录证书绑定域名的方式验证证书是否安装成功。

            https://domain:port   #domain替换成证书绑定的域名,默认443端口可以忽略不输入
            

            如果网页地址栏出现绿色小锁标志,表示证书安装成功。

            Nginx服务器上安装SSL证书,image-20230203203406938,第12张