阿里云ECS服务器配置SSL证书

509 阅读3分钟

用阿里云的ECS服务器和域名,协议默认是http。在浏览器打开页面时,会显示连接不安全。


原本对这个并不在意,但当我用到 hexo-blog-encrypt 插件为文章加密时,输入密码回车没反应,并且在控制台上会出现下面的错误。



搜索得知这就是连接协议不安全引起的,需要升级为https。



证书申请

我们知道升级为https需要ssl证书,在阿里云上就可以申请免费的,因为服务器也是阿里云的,所以部署起来很方便。

在主页搜索SSL证书,进入板块之后0元购买免费证书,每个自然年一次购买可以申请20个,有效期为一年。

填完个人信息提交,几分钟之内就能申请下来。



证书申请

申请下来之后点击部署,选择自己的ECS云服务器。(不要想当然的认为它是作用到域名上,用服务器的ip直接访问同样会显示不安全)



然后会有一个弹窗,要填入证书文件放在服务器的什么物理路径,按推荐位置写即可。


点击确定,等待几秒,证书就部署完成了,可以去服务器的对应路径检查是否已经有了证书文件。


如果使用的阿里云的轻量级服务器,需要先下载Nginx版本的证书到本地,然后将之手动上传到服务器的上述物理路径中。可参考官网教程

如果不用阿里云服务器,用 Github Page ,有一个 强制HTTPS 选项,自动就是https协议。



Nginx配置

因为网站用到了Nginx,所以还需要在Nginx的配置文件中填上证书的路径,让url完成301重定向,主要是在http属性中配置server块。


完整配置

# 配置HTTP。(不加这一块也行,这一块的目的就是将所有的HTTP访问自动重定向到HTTPS页面。如果不加,访问HTTP就访问不到该网站)
server {
    listen  80;
    server_name     hansy.tech;

    return  301 https://$server_name$request_uri;   
}


# 配置HTTPS
server {
    listen                  443 ssl;  # 需要在组策略中开放HTTPS的443端口权限,否则会造成Nginx无法启动。
    server_name             hansy.tech;
    
	# ssl证书地址(以下是默认地址)
    ssl_certificate         /ssl/cert.pem;   
    ssl_certificate_key     /ssl/cert.key;
    
    
	# ssl验证相关配置(可以直接用,不用改)
    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块,可以都堆在这里
    location / {
        root /var/www/main;
        index index.html;
	}
	
	
	
	 # Load configuration files for the default server block.(原本就有的)
     include /etc/nginx/default.d/*.conf;
     error_page 404 /404.html;
     	location = /404.html {
     }
     error_page 500 502 503 504 /50x.html;
        location = /50x.html {
     }
}

保存,然后重启Nginx。

sudo systemctl reload nginx    # 重新加载配置,一般是在修改过 nginx 配置文件时使用。
sudo systemctl restart nginx   # 重启 nginx 服务

如果服务器没有开放443端口,记得在组策略中打开。

上面所有步骤都完成,再访问网站,就显示协议安全了


对于文章的加密功能,也能正常使用了。





help.aliyun.com/document_de…