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
点击网站右上角的Add Site,输入你的域名:
使用免费版本
修改DNS记录
他会自动扫扫描如图
点添加纪录把有和没有www都加上,云朵是彩色的有箭头穿过的是加速了的
(下方两个NS地址是加速服务器,一会验证会对比到)
全部设置好后,去你的域名服务商那里修改域名服务器(Nameservers),指向cloudflare的域名服务器就可以了:
图中说的很清楚,比如我就是到腾讯云的域名管理直接点域名进入基本信息,把DNS改成lodflare提供的两个
等待DNS服务器生效最高可能需要24-48小时但是基本很快就能生效
检查CDN是否生效
修改完域名服务器后,稍等个20来分钟,检查是否成功将站点转移到Cloudflare全球节点上。
1.刷新本地DNS
cmd运行ipconfig /flushdns
2.查看域名服务器
cmd运行nslookup -> set types=ns -> 输入你的域名
。
3.ping自己的域名ping
自己的域名,查看对应的ip地址是cloudfalare的cdn服务器地址
HTTPS SSL
https://zhangzifan.com/wordpress-ssl-link.html
https://www.logcg.com/archives/961.html
https://www.seoimo.com/lamp-ssl/
在cloudflare点crypto
可以看到Cloudflare的免费https证书提供了4个层级,Off就是关闭https,Flexible就是http与https都可以访问,Full就是如果证书出了问题,会通过http请求继续访问,不会报错,而Full(strict)在https证书出问题的时候,因为全部时https连接,会直接报错。很明显,如果要全站做https,这里选择Full(strict
)模式
选择Create Certificate
:
之后就可以看到安装证书的界面
这里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
并点页面下的保存
此时浏览器打开https://youngzijian.cn应该可以看到绿色得锁头并有https加密了
不管有没有都继续操作下面的步骤
进cloudflare的crypto点下面的两个开关
至此,手机电脑应该打开页面都是绿色https了
如果不行尝试给防火墙开443端口
因为HTTPS访问要走443端口,所以,需要在防火墙里将其开启:
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
https://www.ssllabs.com/ssltest/可以用来测试服务器的ssl分数,应该是A
crypto其他设置我自己的如下图
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文件
已经用了Let's ENcrypt的SSL想换其他商家的怎么办
如果之前使用了自动的Let’s Encrypt证书,再将域名转到cloudflare管理则会出现页面无法打开的情况,这时需要lnmp ssl add
重新改写域名的证书文件,选1使用自己的证书文件并指向pem和key文件即可
-
版权声明:本文为原创文章,版权归Joe所有,转载请注明出处.
本文链接:https://www.j000e.com/linux/HTTPSSSLCND.html
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。