在百度和谷歌的鼓励下,现在很多网站都开始换成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
参数,没有的话要先激活这个模块。
1
2
3
4
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_certificate
和ssl_certificate_key
文件的位置
1
2
3
4
5
6
7
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
命令
1
2
3
4
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上去。
1
2
3
4
5
location / {
if ($scheme = http) {
return 301 https://$host$request_uri;
}
}
七、生效 执行/usr/local/nginx/sbin/nginx -s reload
,如无错误,现在应该可以顺利访问 xiaomo.info
这个网站,并且是https的。
八、附录 nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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;
}
参考资料