美文网首页Nginx
HTTPS服务搭建

HTTPS服务搭建

作者: Linux丶晨星 | 来源:发表于2019-07-02 11:50 被阅读0次

    HTTPS协议搭建

    在服务器上生成ssl证书
    源文连接:https://www.cnblogs.com/clsn/p/7793682.html

    1.下载软件
    yum install -y openssl openssl-devel

    2.生成证书

    [root@lb01 backup]#  openssl req -new -x509 -nodes -out server.crt -keyout server.key
     
     Generating a 2048 bit RSA private key
     ......................................................+++
     ...................................+++
     
     writing new private key to 'server.key'
     -----
     You are about to be asked to enter information that will be incorporated
     into your certificate request.
     What you are about to enter is what is called a Distinguished Name or a DN.
     There are quite a few fields but you can leave some blank
     For some fields there will be a default value,
     If you enter '.', the field will be left blank.
     -----
     Country Name (2 letter code) [XX]:CH        #国家名称  
     State or Province Name (full name) []:bj       #省  
     Locality Name (eg, city) [Default City]:bj     #市   
     Organization Name (eg, company) [Default Company Ltd]:ZNIX   #组织名称
     Organizational Unit Name (eg, section) []:ZNIX   #组织名称
     Common Name (eg, your name or your server's hostname) []:ZNIX  #服务器名称
     Email Address []:ADMIN@ZNIX.TOP    #邮箱
    

    查看产生的证书

     [root@lb01 backup]# ls
     server.crt  server.key
    

    生成的密钥文件

     [root@lb01 backup]# ll
     total 8
     -rw-r--r-- 1 root root 1375 Nov  6 14:07 server.crt
     -rw-r--r-- 1 root root 1704 Nov  6 14:07 server.key
    

    3.创建一个目录
    将生成的证书推送到/etc/nginx/ssl_key下

    mkdir -p /etc/nginx/ssl_key
    

    除去密码

    openssl rsa -in server.key -out server.key
    

    4.修改nginx配置文件
    为了配置文件中不那么乱,直接把参数写到一个文件中,直接include调用就可以了

    创建一个内置变量的文件:
    [root@lb01]# vim /etc/nginx/proxy_params 
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-For  $remote_addr;
    
    proxy_connect_timeout  30;
    proxy_send_timeout     60;
    proxy_read_timeout     60;
    
    proxy_buffer_size      32k;
    proxy_buffering   on;
    proxy_buffers   4   128k;
    proxy_busy_buffers_size   256k;
    proxy_max_temp_file_size  256k;
    
    [root@lb01]# vim /etc/nginx/nginx.conf
    ...
        upstream  web_pools {
         server 10.0.0.7:80 weight=1 max_fails=3 fail_timeout=10s;
         server 10.0.0.8:80 weight=1 max_fails=3 fail_timeout=10s;
         }
    #    include /etc/nginx/conf.d/*.conf;
         server {
         listen 80;
         server_name zh.etiantian.com;
         return   302  https://$server_name$request_uri;
         }
         server {
         listen 443 ssl;
         server_name zh.etiantian.com;
            ssl_certificate      ssl_key/server.crt;
            ssl_certificate_key  ssl_key/server.key;
            ssl_session_timeout       5m;
            ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers     ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers on;
            proxy_next_upstream http_404 http_502;
         location / {
            proxy_pass http://web_pools;
            include  proxy_params;
         }
    }
         server {
         listen 80;
         server_name cms.etiantian.com;
         return   302  https://$server_name$request_uri;
    }
         server {
         listen 443 ssl;
         server_name cms.etiantian.com;
            ssl_certificate  ssl_key/server.crt;
            ssl_certificate_key  ssl_key/server.key;
            ssl_session_timeout       5m;
            ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers     ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers on;
            proxy_next_upstream http_404 http_502;
         location / {
            proxy_pass http://web_pools;
            include  proxy_params;
             }  
         }    
         server {
         listen 80;
         server_name kdy.etiantian.com;
         return   302  https://$server_name$request_uri;
         }
         server {
         listen 443 ssl;
         server_name kdy.etiantian.com;
            ssl_certificate  ssl_key/server.crt;
            ssl_certificate_key  ssl_key/server.key;
            ssl_session_timeout       5m;
            ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers     ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers on;
            proxy_next_upstream http_404 http_502;
         location / {
            proxy_pass http://web_pools;
            include  proxy_params;
         }
    }
    }
    

    5.去web服务器上添加

    fastcgi_param HTTPS on
    每个网站代码都添加相同,此处列举一个

    [root@web01]# cat /etc/nginx/conf.d/01-blog.conf 
    server {
        listen      80;
        server_name  zh.etiantian.com;
            access_log /app/log/nginx/access_blog.log main; 
        root /app/nginx/html/blog/;
        location / {
            index index.php index.html index.htm;
        }
           location ~* \.(php|php5)$ {
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param HTTPS on;    #添加这一行,不然假证书不识别,认为不安全网站
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
           }
    }
    

    若lb上设置了nginx关闭---关闭keepalived脚本,还需要启动keepalived

    多个站点使用同一个证书就好。

    [16:13 root@lb01 nginx]# systemctl restart keepalived.service 
    

    相关文章

      网友评论

        本文标题:HTTPS服务搭建

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