Nginx服务器上安装SSL证书

Nginx服务器上安装SSL证书

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);

www.hyithack.com
配置站点的配置文件
把下面配置写入Nginx的配置文件nginx.conf
网站这时候虽然支持了 HTTPS 访问,但是也可以使用 HTTP 来访问,
考虑到搜索引擎目前收录的都是 HTTP 链接,需要将http重定向到https

server

{
    
    
        listen 80;
        server_name www.hyithack.com;
#        access_log logs/access.log main;
#        error_log  logs/error.log crit;
        rewrite ^(.*) https://$host$1 permanent;

}

server

{
    
    
        listen 443 ssl;
        server_name www.hyithack.com;
        access_log logs/access.log main;
        error_log  logs/error.log crit;
	index index.php index.html;
	root /code;

#        ssl on;
        ssl_certificate   /etc/ssl/.pem;
        ssl_certificate_key  /etc/ssl/.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;

	location / {
    
    
        if (!-e $request_filename)
        {
    
    
               rewrite ^(.*)$ /index.php?s=/$1 last;
        }
		}
		
	location ~ \.php$ {
    
    
		include fastcgi_params;
		fastcgi_pass 127.0.0.1:9000;
		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 #查看 Nginx 当前的状态 
systemctl restart nginx #重启Nginx

完成安装
网页地址栏出现小锁标志,表示证书安装成功
SSL数字证书部署在服务器上后,用户浏览器访问网站时,展示如下

www.hyithack.com
小结
证书安装完成后,如果网站无法通过https正常访问
需确认您安装证书的服务器443端口是否已开启或被其他工具拦截
如果您使用的是阿里云ECS服务器,请前往ECS控制台安全组页面配置放行443端口

主页和后台管理https访问正常,其他页面访问出现404错误
这个是伪静态的问题,使用朴素链接可以解决此问题
网站后台—>设置—>固定链接

猜你喜欢

转载自blog.csdn.net/HYXRX/article/details/107870217
今日推荐