快捷搜索: 王者荣耀 脱发

在Nginx服务器如何安装SSL证书

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

提示:我用的是阿里云的产品,就以阿里云进行的:

Nginx安装步骤:

一、下载SSL证书

进入数字证书管理服务/SSL 证书 /免费证书 点击下载 服务器类型选择Nginx 点击下载

二、安装SSL证书

将下载好的证书压缩包进行解压:会有下图两个文件 将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)

编辑Nginx配置文件nginx.conf,修改与证书相关的配置

vim /usr/local/nginx/conf/nginx.conf

按i键进入编辑模式 在nginx.conf中找到到server属性配置,把前面#删除 修改内容如下:

server {
          
   
     #HTTPS的默认访问端口443。
     #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
     listen 443 ssl;
     
     #填写证书绑定的域名
     server_name <yourdomain>;
 
     #填写证书文件名称
     ssl_certificate cert/<cert-file-name>.pem;
     #填写证书私钥文件名称
     ssl_certificate_key cert/<cert-file-name>.key;
 
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
 
     #默认加密套件
     ssl_ciphers HIGH:!aNULL:!MD5;
	 
     #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
     #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
     #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     #ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

     #表示优先使用服务端加密套件。默认开启
     ssl_prefer_server_ciphers on;
 
 
    location / {
          
   
           root html;
           index index.html index.htm;
    }
}

配置HTTP请求自动跳转HTTPS

server {
          
   
    listen 80;
    #填写证书绑定的域名
    server_name <yourdomain>;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
          
   
        index index.html index.htm;
    }
}

然后重启Nginx服务器就可以了

重启如果出现错误:

nginx: [emerg] cannot load certificate "/usr/local/nginx/conf/cert/www.xxx.zxxx.key": PEM_read_bio_

缺少http_ssl_module 模块 解决办法: 进入到nginx的源码安装包的config,注意不是/usr/local/nginx,是带有版本号的

具体的步骤: 1 查看版本

[root@xxxxx sbin]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.19.9
built by gcc 10.2.1 20200825 (Alibaba 10.2.1-3.5 2.32) (GCC) 
configure arguments:

可以看到configure arguments 没有任何的配置

进入到Nginx源码的config目录

[root@xxxxx sbin]# cd /usr/local/nginx/nginx-1.19.9/
[root@xxxxx nginx-1.19.9]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

然后make

[root@xxxxx nginx-1.19.9]# make

停止nginx

[root@xxxxx nginx-1.19.9]# /usr/local/nginx/sbin/nginx -s stop

在查看是否成功:

[root@xxxxx nginx-1.19.9]# /usr/local/nginx/sbin/nginx -V

可以看到configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 已经有http_ssl_module 模块了

[root@xxxxx nginx-1.19.9]# cd /usr/local/sbin
[root@xxxxx nginx-1.19.9]#  ./nginx

然后启动Nginx 访问 就可以看到成功了 有锁了

经验分享 程序员 微信小程序 职场和发展