CDN
HTTPS SSL
Nginx强制https,HTTP 301重定向到HTTPS
已经用了Let's ENcrypt的SSL想换其他商家的怎么办

提供SSL证书和CND服务的商家有很多,甚至在LNMP添加VHost的时候可以自动添加Let's ENcrypt的证书,国内有腾讯云,又拍云,阿里云,七牛云等等等可以说是非常多了.
这里我的SSL证书和CDN服务都选择了Cloudflare,免费的傻瓜一站式操作简直不要太方便

CDN

首先,去官网注册一个账号:https://www.cloudflare.com
q
点击网站右上角的Add Site,输入你的域名:
使用免费版本
修改DNS记录
他会自动扫扫描如图
w
点添加纪录把有和没有www都加上,云朵是彩色的有箭头穿过的是加速了的
(下方两个NS地址是加速服务器,一会验证会对比到)
全部设置好后,去你的域名服务商那里修改域名服务器(Nameservers),指向cloudflare的域名服务器就可以了:
e
图中说的很清楚,比如我就是到腾讯云的域名管理直接点域名进入基本信息,把DNS改成lodflare提供的两个
r
等待DNS服务器生效最高可能需要24-48小时但是基本很快就能生效
检查CDN是否生效
修改完域名服务器后,稍等个20来分钟,检查是否成功将站点转移到Cloudflare全球节点上。
1.刷新本地DNS
cmd运行ipconfig /flushdns
2.查看域名服务器
cmd运行nslookup -> set types=ns -> 输入你的域名
3.ping自己的域名
ping自己的域名,查看对应的ip地址是cloudfalare的cdn服务器地址
t

HTTPS SSL

https://zhangzifan.com/wordpress-ssl-link.html
https://www.logcg.com/archives/961.html
https://www.seoimo.com/lamp-ssl/
在cloudflare点crypto
y
可以看到Cloudflare的免费https证书提供了4个层级,Off就是关闭https,Flexible就是http与https都可以访问,Full就是如果证书出了问题,会通过http请求继续访问,不会报错,而Full(strict)在https证书出问题的时候,因为全部时https连接,会直接报错。很明显,如果要全站做https,这里选择Full(strict)模式
选择Create Certificate
u
之后就可以看到安装证书的界面
i
这里rsa可以换成最新的技术,忘记名称了可以都查一下
下面是两个域名,时间选15年好了
之后你就可以得到一个origin certificate和一个private key
在服务器上一个位置如root下新建文件

vi youngzijian.cn.pem

复制证书的那一串包括---部分然后保存

Vi youngzijian.cn.key

复制key的一大串保存
Lnmp添加域名的时候已经指向过SSL了,这里单独操作一下

lnmp ssl add

务必确保输入的域名和网站路径不要出错
输入域名(xxx.com)
输入多域名(www.xxx.com)
选1添加自己的证书和密钥
填写要求的证书和key的绝对路径如/root/youngzijian.cn.pem
等待执行完成会出现成功字样

如果是wordpress
登录和后台强制开启 SSL,可以通过修改 wp-config.php 文件,直接在文件末尾加入以下两行代码:
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

进入wp后台点设置,在两个url上加s并点页面下的保存
o

此时浏览器打开https://youngzijian.cn应该可以看到绿色得锁头并有https加密了
不管有没有都继续操作下面的步骤
进cloudflare的crypto点下面的两个开关
p
a
至此,手机电脑应该打开页面都是绿色https了
如果不行尝试给防火墙开443端口
因为HTTPS访问要走443端口,所以,需要在防火墙里将其开启:

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

https://www.ssllabs.com/ssltest/可以用来测试服务器的ssl分数,应该是A
crypto其他设置我自己的如下图
s

Nginx强制https,HTTP 301重定向到HTTPS

最后需要注意的是配置全站Https要自定义301重定向,将非https的监听全部强制转移到https.
直接在WEB服务器(Nginx)中配置一下,将80端口(HTTP)全部301重定向到HTTPS
LNMP的配置文件在/usr/local/nginx/conf/vhost/youdomain.com.conf,将下面的配置添加到文件中。

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

上面的配置含义是当我们去使用HTTP请求https://www.j000e.com或www.https://www.j000e.com的时候全部301重定向到https://www.j000e.com,下面是完整的配置文件供参考:

root@TokyoSecond:~# cat /usr/local/nginx/conf/vhost/https://www.j000e.com.conf
#server
#    {
#        listen 80;
#        #listen [::]:80;
#        server_name https://www.j000e.com www.https://www.j000e.com;
#        index index.html index.htm index.php default.html default.htm default.php;
#        root  /home/wwwroot/https://www.j000e.com;
#
#        include rewrite/typecho.conf;
#        #error_page   404   /404.html;
#
#        # Deny access to PHP files in specific directory
#        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
#
#        include enable-php-pathinfo.conf;
#
#        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#        {
#            expires      30d;
#        }
#
#        location ~ .*\.(js|css)?$
#        {
#            expires      12h;
#        }
#
#        location ~ /.well-known {
#            allow all;
#        }
#
#        location ~ /\.
#        {
#            deny all;
#        }
#
#        access_log off;
#    }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name https://www.j000e.com www.https://www.j000e.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/https://www.j000e.com;
        ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/https://www.j000e.com/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/conf/ssl/https://www.j000e.com/https://www.j000e.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        include rewrite/typecho.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log off;
    }
server
{
        listen 80;
        server_name https://www.j000e.com www.https://www.j000e.com;
        rewrite ^(.*) https://www.j000e.com$1 permanent;
}

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name https://www.j000e.com www.https://www.j000e.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/https://www.j000e.com;
        ssl on;
        ssl_certificate /home/wwwroot/https://www.j000e.com.pem;
        ssl_certificate_key /home/wwwroot/https://www.j000e.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        include rewrite/typecho.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log off;
    }

配置修改后别忘记重载一下Nginx:/etc/init.d/nginx restart
注意,需要把第一个监听80端口的server{}注释掉,做法如下
http://blog.51cto.com/858004880/1766823 (参考技巧)
利用vim多行注释和多行删除命令配置nginx.conf文件
skill

已经用了Let's ENcrypt的SSL想换其他商家的怎么办

如果之前使用了自动的Let’s Encrypt证书,再将域名转到cloudflare管理则会出现页面无法打开的情况,这时需要lnmp ssl add重新改写域名的证书文件,选1使用自己的证书文件并指向pem和key文件即可

THE END
最后修改:2018 年 06 月 29 日 16 : 29
本文链接:https://www.j000e.com/linux/HTTPSSSLCND.html
版权声明:本文『HTTPS(SSL) & CND』为『Joe』原创。著作权归作者所有。
转载说明:HTTPS(SSL) & CND || Joe's Blog』转载许可类型见文末右下角标识。允许规范转载时,转载文章需注明原文出处及地址。
Last modification:June 29, 2018