为网站添加SSL证书并配置HTTP2(一)
个人博客:https://xiaofengsir.com/,关注更新文章
一. 配置SSL证书
证书说明:这里使用的证书是阿里云个人一年免费的SSL证书,只需要在阿里云上申请即可获得。
web服务器说明:这里采用的web服务器是Nginx服务器。
服务器操作系统说明:这里使用的是Centos 7.x系统。
终端登陆工具与FTP工具说明:这里使用的是Xshell与Xftp工具。
1. 下载证书
1.登陆到阿里云控制台,今天证书安全下载界面,选择Nginx/Tengine,下载证书,并解压到桌面。
2. 上传证书到服务器
1.登陆到服务器,并进入到Nginx目录。
2.创建证书存放目录:
3.使用Xftp将证书上传至新建的目录下:
3. 配置Nginx使其支持SSL证书
1.进入nginx下的conf.d目录,创建一个新的.conf文件,命名为ssl.域名.conf(命名可任意,但需以.conf结尾)。
2.为新建的.conf文件添加如下代码:
server {
listen 443;
#------------------------------------
# 修改为你的域名
server_name 域名.com www.域名.com;
#------------------------------------
ssl on;
#-----------------------------------------------------
# root目录,即为你网站的存放目录
root /mnt/www/域名.com/public_html/wordpress/;
#------------------------------------------------------
index index.html index.htm index.php;
#--------------------------------------------------------------------
# 将下面两行修改为SSL证书存放路径
ssl_certificate /etc/nginx/ssl/域名.com/214190949470644.pem;
ssl_certificate_key /etc/nginx/ssl/域名.com/214190949470644.key;
#--------------------------------------------------------------------
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#----------------------------------------------------------------------------
# 以下为Nginx的基本配置
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#------------------------------------------------------------------------------
}
3.测试下配置的正确性,成功后重启下Nginx,再打开浏览器测试HTTPS是否能正常访问。
另外说明:可以看到目前conf.d目录里有3个以.conf结尾的配置文件,basic.conf为基本的解析配置文件;域名.conf为不使用SSL证书的http配置文件;ssl.域名.com为新增加的使用SSL证书的HTTPS配置文件。因此,在目前未配置301重定向的情况下,打开浏览器测试网站的时候,可以发现网站即可正常访问http,也可以正常访问https。
二. 为Nginx配置301重定向
说明:在上面结尾说了,目前网站的状态应该是http和https都可以正常访问。现在则为Nginx配置一下301重定向,这样当访问网站的时候就会自动定向到https,而不会在通过http访问网站了。
配置301重定向
1.进入Nginx配置目录,打开http的配置文件
2.编辑域名.conf配置文件
# 删除所有其他代码,仅添加如下代码即可
server {
listen 80;
#------------------------------------
# 将“域名”改为你自己的域名
server_name 域名.com www.域名.com;
#------------------------------------
return 301 https://$host$request_uri;
}
注意:这里编辑的是域名.conf,而不是ssl.域名.conf!!!
3.重启Nginx,打开浏览器测试
systemctl restart nginx
配置至此,网站已经只会再通过https访问了,但是仍然还不会使用http2.0协议,在下一篇中将会说明如何配置http2.0。