自己制作ssl证书:自己签发免费ssl证书,为nginx/apache生成ssl证书,并配置端口转发

回复 收藏
本帖最后由 温柔的笑猫 于 2016-4-25 19:02 编辑

  首先执行如下命令生成一个key
  # openssl genrsa -des3 -out ssl.key 1024
  然后他会要求你输入这个key文件的密码。  不推荐输入。
  因为以后要给nginx使用。
  每次reload nginx配置时候都要你验证这个PAM密码的。
  由于生成时候必须输入密码。你可以输入后 再删掉。

  # mv ssl.key xxx.key
# openssl rsa -in xxx.key -out ssl.key
# rm xxx.key
   然后根据这个key文件生成证书请求文件
  # openssl req -new -key ssl.key -out ssl.csr
   以上命令生成时候要填很多东西 一个个看着写吧(可以随便,毕竟这是自己生成的证书)

   Country Name (2 letter code) [AU]:CN   State or Province Name (full name) [Some-State]:china
   Locality Name (eg, city) []:shanghai
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:airway(随便写)
   Organizational Unit Name (eg, section) []:airway
   Common Name (eg, YOUR name) []:airway
   Email Address []:(直接回车)
    ...

    最后根据这2个文件生成crt证书文件
   # openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
    这里365是证书有效期 推荐3650(时间长好)。
    这个大家随意。
    最后使用到的文件是key和crt文件。

    备注:
    如果需要用pfx 可以用以下命令生成
    openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx


    在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。
     ssl on;
     ssl_certificate /home/ssl.crt;
     ssl_certificate_key /home/ssl.key;
     ssl_session_timeout 5m;
     ssl_protocols SSLv2 SSLv3 TLSv1;
     ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
     ssl_prefer_server_ciphers on;
    然后重启nginx就大功告成了。



    同理:
    在Apache中的配置也一样:
     
       ServerName  xxxx.xxxx.com:443
       ServerAdmin xxxx@xxxx.com

       SSLEngine on
       SSLCertificateFile /home/ssl.crt
       SSLCertificateKeyFile /home/ssl.key
     

     然后重启apache就大功告成了。


完成以后要做端口转发(nginx的conf):
     server
{
    listen  80;
    server_name  xxxxx.xxxxx.com;
    location / {
        proxy_pass        http://17.17.0.1:88/pass/;(这句话起作用)
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size 500m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
    }
}

做apache的端口转发(httpd.conf):
         首先要先添加两句话:
         LoadModule proxy_module modules/mod_proxy.so
         LoadModule proxy_http_module modules/mod_proxy_http.so
        

               ServerName  xxxx.xxxxxx.com:443
               ServerAdmin oam@xxxxxx.com

                ProxyPass / http://17.17.0.1:88/pass/
                ProxyPassReverse / http://17.17.0.1:88/pass/

                ErrorLog "/usr/local/apache/logs/error_log"
                TransferLog "/usr/local/apache/logs/access_log"

                SSLEngine on
                SSLCertificateFile /home/ssl.crt
                SSLCertificateKeyFile /home/ssl.key        
2016-04-25 18:09 举报
已邀请:
0

qq495966654

赞同来自:

看看
0

言尽

赞同来自:

但是,客户端访问,不还是会提示证书问题吗
0

温柔的笑猫

赞同来自:

言尽 发表于 2016-4-25 20:27
但是,客户端访问,不还是会提示证书问题吗

是的,下面有个高级,点开选择继续访问就OK了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: