美文网首页
Nginx配置SSL证书

Nginx配置SSL证书

作者: LuckyBugGo | 来源:发表于2018-12-07 00:29 被阅读0次

    1. 配置nginx.conf文件

    一般情况下 Nginx的安装目录为:/usr/local/nginx
    在终端输入vim /usr/local/nginx/conf/nginx.conf对nginx.conf文件进行修改。
    一般在文件末端有被注释掉的配置内容,未修改前内容如下:

        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    

    修改项为:

    • server_name 设置绑定的域名
    • ssl_certificate 证书
    • ssl_certificate_key 证书的私钥
    • ssl_protocols 使用的协议
    • ssl_ciphers 配置加密套件,写法遵循 openssl 标准
      这里直接将.crt证书文件和.key私钥文件放在/usr/local/nginx/conf/文件夹,配置好的示范如下:
    server {
            listen       443 ssl;
            server_name  www.XXXXX.cn;
            ssl_certificate      1_www.XXXXX.cn_bundle.crt;
            ssl_certificate_key  2_www.XXXXX.cn.key;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_session_timeout  5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers  on;
            location / {
                root   html;
                index  index.html index.htm;
            }
        }
    

    2. 重启报错:缺少http_ssl_module模块

    这是由于在最开始编译nginx时,没有加入http_ssl_module模块的原因导致的。
    解决方案:重新编译一次nginx,并把http_ssl_module模块加上去。

    • 如果出现这个问题,一般情况下也可能没有安装openssl和openssl-devel模块。请安装这两个模块:
      yum install openssl
      yum install openssl-devel

    1. 检查当前nginx配置了什么模块

    $ /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.13.8
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
    

    configure arguments:这个参数后面就是上次编译的配置内容,接下的重新编译要带上!(这个的示范已经带了http_ssl_module模块了,请忽略它!)

    2. 找到nginx安装包的目录重新编译nginx

    找到nginx安装包的目录(请祈祷你之前没有还没有删掉安装包并还记得它的目录!)。

    .$ /configure --原来有的模块(如果有的话) --with-http_ssl_module
    

    记得加上步骤1找到的上次编译配置的模块。
    然后再编译

    $ make
    

    3. 将新生成的nginx替换掉旧的

    经过步骤2,会在安装包目下的objs文件里面生成一个新的nginx文件。将这个nginx文件替换掉/usr/local/nginx/sbin/文件夹里面的。

    $ rm /usr/local/nginx/sbin/nginx # 删掉旧的
    ¥ mv ./objs/nginx /user/local/nginx/sbin/ # 在安装包目录下 将objs文件夹里面新的nginx文件移动到/usr/local/nginx/sbin/目录下
    

    4. 重启nginx

    $ /usr/local/nginx/sbin/nginx -s reload
    

    3. http 自动跳转 https (可选)

    这时候的网站既可以使用http://请求,也可以使用https://请求。
    如果想将所有的http请求自动跳转为https请求,在/usr/local/nginx/conf/nginx.conf添加rewrite ^(.*) https://$host$1 permanent;

    相关文章

      网友评论

          本文标题:Nginx配置SSL证书

          本文链接:https://www.haomeiwen.com/subject/vrfzcqtx.html