nginx 安装ssl证书一条龙服务

nginx 安装ssl证书一条龙服务

------------------------------------------------1. 证书申请 ----------------------------------------------

最近公司突然提出要用https了 原因是对苹果连接的接口只允许https通过了,哎无处不坑爹(仔细想下也是应该的毕竟安全重要)

首先我们要重新编译nginx使其能支持ssl:

这是我编译的nginx的参数:作为参考--prefix=/opt/nginx/ --user=nginx --with-http_ssl_module --with-http_gunzip_module --without-http_rewrite_module --without-http_fastcgi_module --without-http_upstream_ip_hash_module

编译nginx需要安装些赖 如openssl 等 编译报错可百度报错信息,看差些什么东西 (不是我不把依赖写全 ,只是多折腾几下 加深下影响也好嘛)

编译完成后我们的nginx就可以支持https了,修改默认的nginx.conf :

 #HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  master;
        ssl on;
        ssl_certificate /opt/nginx/conf/server.crt;
        ssl_certificate_key /opt/nginx/conf/server.key;
    #   
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部分去掉注释 ssl_certificat ,ssl_certificate_key 后面跟上证书的key和crt文件位置

然后./sbin/nginx -t 查看nginx 能否正常启动 (需要输入证书的密码)


然后就到最重要的部分了---申请ssl证书

我们这里申请的是免费的证书:startssl.com/Validate/DomainValidate

申请的免费证书使用时间为3年 

进入网站使用邮箱注册,登陆,没次登陆时会有邮箱验证

然后我们就需要填写一些基本信息,我没有填写,登陆后会看到一个控制面板

点击这里选择免费的证书


选择这里点击continue然后输入你买的域名,

后面会whois你的域名信息,会给你绑定域名的邮箱发一封邮件验证,

然后要求你绑定二级域名之类的 按照提示填写就行了


在linux的nginx 目录下新建一个ssl文件夹,cd到ssl

执行如下命令:openssl req -newkey rsa:2048 -keyout yourname.key -out yourname.csr
根据提示输入你的信息 (要记住你填写的信息,地址可以随便填写,密码要记住,之后要用

执行成功后,会生成一个youname.csr的文件

cat youname.csr 将得到的信息填入

点击完成,

之后你的ssl证书就得到了(可能是马上就有,也可能要等startssl给你发邮件)

默认得到的ssl证书,是个压缩包(包含nginx apache iis的所需要的证书)

然后你只需把证书拷贝的nginx对应的目录就行

启动nginx ,输入你的证书密码 然后通过域名访问你就能看到左上角的https连接了

---------------------------- 2  nginx中使用pfx格式的ssl证书-----------------------------------------------

原文及更多文章请见个人博客:http://heartlifes.com

首先,nginx在编译安装时得安装ssl模块 

上传ssl证书到服务器/usr/local/nginx/ssl/xxx.pfx

生成证书crt可key

openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -clcerts -nokeys -out /usr/local/nginx/ssl/xxx.crt
openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -nocerts -nodes -out /usr/local/nginx/ssl/xxx.rsa
  • 1
  • 2

验证证书正确性

openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.rsa
  • 1

配置nginx

server {  
    listen 443;  
    server_name localhost;
    ssl on;  
    ssl_certificate /usr/local/nginx/ssl/xxx.crt;  
    ssl_certificate_key /usr/local/nginx/ssl/xxx.rsa;  
    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;  
    location ~ /api/(.*) {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Ssl on;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://serverAPI;
        }
    }

-------------------------------------------3. nginx配置SSL(https)-----------------------------------

nginx配置ssl很简单,首先需要两个文件,一个是crt文件,另一个是key文件,如下所示:

server.crt; #(证书公钥)
server.key; #(证书私钥)

在windows下的证书一般是pfx文件,这里需要把pfx文件转成crt和key文件,转换方法如下:

第一步:下载OpenSSL软件包 
第二步:解压缩到 c:\openssl 目录下,运行cmd.exe进入命令窗口,执行:
          cd c:\openssl\bin
          set OPENSSL_CONF=openssl.cnf
        将*.pfx文件放到bin目录下,执行:
          openssl pkcs12 -in myssl.pfx -nodes -out server.pem
          openssl rsa -in server.pem -out server.key
          openssl x509 -in server.pem -out server.crt


得到server.key,server.crt


然后把这两个文件放到nginx的conf文件夹下

打开nginx配置文件,添加配置段:

[plain]  view plain  copy
  1. # HTTPS   
  2. server {  
  3.   
  4.     listen 443;  
  5.     server_name www.xxx.com; # 项目域名  
  6.   
  7.     ssl on;  
  8.     ssl_certificate server.crt; #(证书公钥)  
  9.     ssl_certificate_key server.key; #(证书私钥)  
  10.   
  11.     ssl_session_timeout 5m;  
  12.     ssl_protocols  SSLv2 SSLv3 TLSv1;  
  13.     ssl_ciphers  HIGH:!aNULL:!MD5;  
  14.     ssl_prefer_server_ciphers on;         
  15.   
  16.     location / {  
  17.         proxy_pass      http://192.168.1.11:8086; # tomcat服务器地址  
  18.     }  
  19.   
  20. }  

然后访问https://www.xxx.com 就可以了

如果要实现http强制跳转到https,可以添加下面配置段:

[plain]  view plain  copy
  1. server {  
  2.     listen       80;         
  3.     server_name www.xxx.com;  
  4.     # 跳转到HTTPS  
  5.     return  301 https://$server_name$request_uri;  
  6. }  


猜你喜欢

转载自blog.csdn.net/ziyouniao719672119/article/details/80417791