封面

拥抱https(http全面切换到https)

在百度和谷歌的鼓励下,现在很多网站都开始换成https了啊,只是有的没有隐私数据的网站感觉没有太大必要,但是设计要密码账号的网站必须要的。不过有部分网站没有换成https只是暂时的,2-3年后预估互联网会全部变成https。因为https成本也不是很高,免费SSL证书也有,比如腾讯免费SSL证书,starssl免费证书等。关键是https对SEO更加友好。

准备工作

域 名:阿里云

服务器:阿里云ECS

SSL证书: 腾讯SSL免费版

web容器:nginx+php

一、为什么要切换到HTTPS

1.安全方面

HTTPS比HTTP更加安全

2.技术方面

不懂HTTPS多不好意思啊,所以就当是学习了。

二、为什么要用腾讯SSL

因为免费啊,毕竟穷人用不起企业级别的,先用一年免费的再说。starssl是外国的,看不习惯鸟语还是老老实实用中文。

三、申请证书

申请地址:https://console.qcloud.com/ssl

申请证书之后会给一个下载链接,下载之后会有3个文件夹。分别是nginx、tomcat、apache。因为我个人用的是nginx,就说下nginx的配置。没有调查就没有发言权,用其他两种的小伙伴请自行研究。

四、DNS配置

证书申请通过之后会让你配置一个CNAME类型的DNS,然后把这个DNS在你的域名中添加一个cname的解析。
cname

五、上传

将下载的证书nginx文件夹打包上传到 usr/local/nginx目录

六、nginx配置

先确认nginx安装时已编译http_ssl模块,也就是执行如下命令查看是否存在–with-http_ssl_module参数:

执行/usr/local/nginx/sbin/nginx -V这个命令

在返回的结果中找是否有--with-http_ssl_module参数,没有的话要先激活这个模块。

nginx version: nginx/1.6.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.0.1/

然后在usr/local/nginx/conf/nginx.conf中修改配置,配置如下
在server中加入以下内容,注意修改一下对应ssl_certificatessl_certificate_key文件的位置

listen 443;
ssl on;
ssl_certificate /usr/local/nginx/ssl/1_xiaomo.info_bundle.crt; #证书公钥文件路径
ssl_certificate_key /usr/local/nginx/ssl/2_xiaomo.info.key; #证书私钥文件路径
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;

这一段主要是开启SSL

保存配置之后要确认是否配置正确,执行/usr/local/nginx/sbin/nginx -t命令

linux-test:~ # /usr/local/nginx/sbin/nginx -t
#如下显示则为正确无误:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重定向http到https,加入以下这段,意思是访问http的网站的时候会重定向到https上去。

location / {
if ($scheme = http) {
return 301 https://$host$request_uri;
}
}

七、生效

执行/usr/local/nginx/sbin/nginx -s reload,如无错误,现在应该可以顺利访问 xiaomo.info这个网站,并且是https的。

八、附录

nginx配置

server
{
listen 80;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/ssl/1_xiaomo.info_bundle.crt; #证书公钥文件路径
ssl_certificate_key /usr/local/nginx/ssl/2_xiaomo.info.key; #证书私钥文件路径
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;

server_name xiaomo.info;
index index.html index.htm index.php;
root /data2/xiaomo.github.io/public;

location ~ \.(jpg|png|gif|js|css|swf|flv|ico)$ {
expires 12h;
}

location / {
if ($scheme = http) {
return 301 https://$host$request_uri;
}
}

location ~* ^/(doc|logs|app|sys)/ {
return 403;
}

location ~ .*\.(php|php5)?$
{
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
try_files $uri =404;
error_page 404 = /404.html;
fastcgi_pass unix:/tmp/php-cgi.sock;
include fastcgi.conf;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

error_log /home/wwwlogs/error_log.log;
}

参考资料

1. Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程

2. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级

文章目录
  1. 1. 准备工作
    1. 1.1. 域 名:阿里云
    2. 1.2. 服务器:阿里云ECS
    3. 1.3. SSL证书: 腾讯SSL免费版
    4. 1.4. web容器:nginx+php
  2. 2. 一、为什么要切换到HTTPS
    1. 2.1. 1.安全方面
    2. 2.2. 2.技术方面
  3. 3. 二、为什么要用腾讯SSL
  4. 4. 三、申请证书
    1. 4.1. 四、DNS配置
  5. 5. 五、上传
  6. 6. 六、nginx配置
  7. 7. 七、生效
  8. 8. 八、附录
  9. 9. 参考资料
    1. 9.1. 1. Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
    2. 9.2. 2. 让你的网站免费支持 HTTPS 及 Nginx 平滑升级


twitter分享


Fork me on GitHub