HTTPS和HTTP的区别
1.https协议需要到ca申请证书,一般免费证书很少,需要交费。
2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
3.http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4.http的连接很简单,是无状态的。
5.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
个人理解
HTTP和HTTPS是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.HTTPS就是非对称加密算法,客户端首先会向服务端发起请求,这时服务端会给客户端返回一个证书,证书里面包含产生的公钥,这时,客户端会随机产生对称密钥,然后用服务端返回的公钥对该密钥进行加密,再传输给服务端,服务端用本地的私钥进行解密,得到对称密钥。接下来,客户端和服务端就使用对称密钥进行通信了.
免费获取SSL证书的方式
我们去阿里云网站获取免费的SSL证书
点击购买证书然后按照下图所示你就能看到免费的SSL证书了
下载证书
- 这里购买免费的SSL证书,申请完成之后,直接在服务平台下载即可
- 下载完成后把下载好的证书文件上传到 /etc/ssl这个目录中并解压
- 一定要注意位置,不然启动nginx会出现文件没有找到的错误
- 证书上传成功后我们要去写几处配置
对wordpress文章内的图片及后台强制https设置
wordpress上传的图片都写入了绝对地址,也就是启用https前所有上传到文章的图片都是以http://开头的地址存储
如果不转换成https访问网站时浏览器顶部的“小锁”会在某些浏览器显示安全警告
让图片变成https地址很简单,只需要在当前主题的functions.php文件中添加以下代码
/* 替换图片链接为 https */ function my_content_manipulator($content){ if( is_ssl() ){ $content = str_replace('http://www.xxx.com/wp-content/uploads', 'https://www.xxx.com/wp-content/uploads', $content); } return $content; } add_filter('the_content', 'my_content_manipulator');
开启登录和后台https访问
打开网站根目录下的wp-config.php文件,在文件底部添加以下代码
/* 强制后台和登录使用 SSL */ define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
配置站点目录的nginx配置文件
把下面配置写入Nginx的配置文件nginx.conf
网站这时候虽然支持了 HTTPS 访问,但是也可以使用 HTTP 来访问
考虑到搜索引擎目前收录的都是 HTTP 链接,需要将http重定向到https
server { listen 80; server_name blog.wgzll.cn; access_log logs/access.log main; error_log logs/error.log crit; rewrite ^(.*) https://$host$1 permanent; } server { listen 443; server_name blog.wgzll.cn; access_log logs/access.log main; error_log logs/error.log crit; index index.php index.html index.html; root /code; ssl on; ssl_certificate /etc/ssl/4248541_blog.wgzll.cn.pem; #/etc/sll下的.pem文件 ssl_certificate_key /etc/ssl/4248541_blog.wgzll.cn.key; #/etc/sll下的.key文件 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; } } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { expires 3d; access_log off; } location ~ ..(js|css)$ { expires 3d; access_log off; } }
检查配置文件语法是否正确,然后重启服务
nginx -t
systemctl restart nginx
出现404报错解决方式
这个是伪静态的问题,使用朴素链接可以解决此问题
网站后台--->设置--->固定链接
部署完成
网页地址栏出现小锁标志,表示证书安装成功
SSL数字证书部署在服务器上后,用户浏览器访问网站时,展示如下
小结
证书安装完成后,如果网站无法通过https正常访问
需确认您安装证书的服务器443端口是否已开启或被其他工具拦截
如果您使用的是阿里云ECS服务器,请前往ECS控制台安全组页面配置放行443端口