nginx https实战配置

原理参考:https://blog.csdn.net/mynamepg/article/details/79074766

网站 HTTP 升级 HTTPS 完全配置手册

 

Nginx + Tomcat + HTTPS 配置原来不需要在 Tomcat 上启用 SSL 支持

https 加密那点事漫画(挺不错,来自公众号码农有道)

实战:

///////////////////////////////////////////////////////////////////////////////简要步骤///////////////////////////////////////////////////////////////////////////////

1. 安装nginx的时候的需要http_ssl_module模块

   否则在配置完server后重启nginx会出现[emerg] 10464#0: unknown directive “ssl” in…

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

 2. 生成证书步骤

#cd /usr/local/nginx/conf

a、//生成私钥

#openssl genrsa -des3 -out server.key 1024

b、//生成证书请求文件

#openssl req -new -key server.key -out server.csr

c、//生成证书(测试时可使用)

openssl req -x509 -days 3650 -key server.key -in server.csr > server.crt  

说明:3650天表示十年,这是用步骤a,b的的密钥和证书请求生成证书server.crt,-days参数指明证书有效期,单位为天,x509表示生成的为X.509证书。以上签署证书仅仅做测试用,真正运行的时候,应该将CSR发送到一个CA返回真正的证书。网上有些文档描述生成证书文件的过程比较繁琐,就是因为    他们自己建立了一个CA中心,然后再签署server.csr。

用openssl x509 -noout -text -in server.crt 可以查看证书的内容。证书实际上包含了Public Key

d、//生成无密的私钥(可避免nginx配置SSL安全证书后,重启免输入密码)

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

e、将crt证书格式导出为cer证书格式,供ios客服端调用使用

#openssl x509 -in server.crt -out server.cer -outform der

3、nginx配置

nginx https实战配置_第1张图片

nginx https实战配置_第2张图片

配置完一定要重启nginx,使用kill方式,杀掉后,重启。

以上就配置好https了。

一些工具使用:

1、查看证书日期

openssl x509 -in server.crt -noout -dates

4、http和https共存:增加一个域名并新增一个server配置

server {
        listen 80;
        server_name pc.xxx.com;
        charset utf-8;
        location / {
            proxy_pass http://192.168.1.10:8083;
         }

}

5、全站https(参考:https://www.cnblogs.com/kevingrace/p/6187072.html)

1、网站是升级https了,但是用户又不知道,而且不输入协议头的话浏览器默认都是按照http来加载,所以我们还要对http做301       自动跳转处理。

   server {
       listen       80;
       server_name  www.localhost.com;
       location / {
        rewrite  ^(.*)  https://www.localhost.com$document_uri permanent;
     }
    }

上述自动跳转配置会自动携带URL和参数,例如,访问 http://www.localhost.com/test.html?a=1 会自动跳转到 https://www.localhost.com/test.html?a=1 。`

2、利用meta的刷新作用将http跳转到https-

上述的方法均会耗费服务器的资源,可以借鉴百度使用的方法:巧妙的利用meta的刷新作用,将http跳转到https,可以基于http://dev.wangshibo.com的虚拟主机路径下写一个index.html,内容就是http向https的跳转

将下面的内容追加到index.html首页文件内

[root@localhost ~]# cat /var/www/html/8080/index.html

 

"refresh" content="0;url=https://dev.wangshibo.com/"

</html>

[root@localhost ~]# cat /usr/local/nginx/conf/vhosts/test.conf

server {

    listen 80;

    server_name dev.wangshibo.com wangshibo.com *.wangshibo.com;

    index index.html index.php index.htm;

    access_log  /usr/local/nginx/logs/8080-access.log main;

    error_log  /usr/local/nginx/logs/8080-error.log;

    #将404的页面重定向到https的首页 

    error_page  404 https://dev.wangshibo.com/;  

    location ~ / {

    root /var/www/html/8080;         

    index index.html index.php index.htm;

    }

    }

 

参考链接:

微信文档 HTTPS服务器配置

apache2.2配置https协议(key文件、crt文件、csr文件生成方法)

https SSL主流数字证书都有哪些格式?

网站SSL证书在线检测、ssl certificate checker、ssl certificate decoder、网站SSL证书解码

///////////////////////////////////////////////////////////////////////////////具体步骤///////////////////////////////////////////////////////////////////////////////

第一步、nginx重新编译添加ssl模块

1、查看nginx版本号:

cd /usr/local/nginx/sbin

./nginx -V


2、下载nginx对应版本源码包并解压

cd /usr/local/src

wget http://nginx.org/download/nginx-1.10.1.tar.gz

tar -zxvf nginx-1.10.1.tar.gz

3、编译

cd nginx-1.10.1

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

make

4、复制执行文件

 cd /usr/local/src/nginx-1.10.1/objs

killall nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

cp objs/nginx /usr/local/nginx/sbin/nginx 

/usr/local/nginx/sbin/nginx -t

cd /usr/local/nginx/sbin/
./nginx

第二步、SSL证书申请

1、确认需要申请证书的域名

2、生成私钥和csr文件

在linux机器上执行以下命令生成私钥

#openssl genrsa -out server.key 2048

在linux机器上执行以下命令生成csr文件

#openssl req -new -key server.key -out certreq.csr

以下黑色标识文字仅供参考,请根据商户自己实际情况进行填写

Country Name: CN                      //您所在国家的ISO标准代号,中国为CN

State or Province Name:guandong       //您单位所在地省/自治区/直辖市

Locality Name:shenzhen                 //您单位所在地的市/县/区

Organization Name: Tencent Technology (Shenzhen) Company Limited                 //您单位/机构/企业合法的名称 

Organizational Unit Name: R&D         //部门名称 

Common Name: www.example.com     //通用名,例如:www.itrus.com.cn。此项必须与您访问提供SSL服务的服务器时所应用的域名完全匹配。

Email Address:                          //您的邮件地址,不必输入,直接回车跳过

"extra"attributes                        //以下信息不必输入,回车跳过直到命令执行完毕。

执行上面的命令后,在当前目录下即可生成私钥文件server.keycertreq.csr csr文件

3、

a、将生成的csr文件提交给第三方证书颁发机构申请对应域名的服务器证书,同时将私钥文件保存好,以免丢失。

b、服务器配置https协议,三种免费的方法(可使用免费的证书)

4、证书申请后,证书颁发机构会提供服务器证书内容和两张中级CA证书,请按证书颁发机器说明生成服务器证书,此处假设服务器证书文件名称为server.pem

5、将生成的私钥文件server.key和服务器证书server.pem拷贝至服务器指定的目录即可进行HTTPS服务器配置

第三步、HTTPS服务器配置

1、 Nginx配置

server {

listen       443;   #指定ssl监听端口

server_name  www.example.com;

ssl on;    #开启ssl支持

ssl_certificate      /etc/nginx/server.pem;    #指定服务器证书路径

ssl_certificate_key  /etc/nginx/server.key;    #指定私钥证书路径

ssl_session_timeout  5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     #指定SSL服务器端支持的协议版本

ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;    #指定加密算法

ssl_prefer_server_ciphers   on;    #在使用SSLv3和TLS协议时指定服务器的加密算法要优先于客户端的加密算法

#以下内容请按域名需要进行配置,此处仅供参考

location / {

return 444;

}

}

你可能感兴趣的:(https)