记录如何将网站升级https,免费获取证书。
背景
直接部署再服务器的网站通常默- 认是明文的 http 协议的,也就是说你所有的请求都是很容易被别人监控、窃取和修改的,基本等于裸奔,非常不安全。
可以通过开启 https
来增加安全防护功能,来使你的网站受到保护,不容易被窃取隐私信息。
想要开启 https 功能通常需要证书,而证书一般是需要购买的,本文介绍一种免费获取证书
的方法。
准备
- 一台linux服务器;
- 安装 nginx;
- https 证书(本文章会说明如何免费获取证书);
步骤
1. 新建 html 文件
可以在服务器上的某个目录新建一个 index.html
文件,用来当做我们的网站。
- 新建 index.html 文件
vim /data/sites/blog/index.html
复制代码
- index.html文件内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Https</title>
</head>
<body>
<h1 style="text-align: center;">Hello Https!</h1>
</body>
</html>
复制代码
2. nginx 代理
- nginx 基本配置
user www;
# 其他配置...
http {
# nginx请求日志地址
access_log /usr/local/webserver/nginx/logs/access.log;
server {
listen 80; # 监听端口
server_name your.server.name;# 域名
index index.html index.htm index.php;
root /data/sites;# 站点目录
location / {
root html;
index index.html index.htm;
}
location /blog {
root /data/sites/blog;
}
}
}
复制代码
- 重启 nginx 服务
nginx -t
nginx -s reload
复制代码
经过这步,访问 http://your.server.name/blog
就可以看到这样的页面了:
可以看到现在地址栏的协议是 http ,还有个感叹号,点击提示不安全:
3. 获取https证书
-
下载安装免费获取证书的软件
keymanager
:keymanager.org -
下载后注册账号并登录。
-
点击打开 keymanager
- 按照软件提示取阿里云/腾讯云 等云服务的域名管理后台
添加记录
- DNS 验证
- 下载证书
- 将文件拷贝到服务器某个目录
4. 修改nginx配置https
- 主要是两点:添加ssl配置、指定证书位置
user www;
# 其他配置...
http {
# nginx请求日志地址
access_log /usr/local/webserver/nginx/logs/access.log;
server {
listen 443 ssl; # 监听端口
server_name your.server.name;# 域名
index index.html index.htm index.php;
root /data/sites;# 站点目录
access_log /usr/local/webserver/nginx/logs/blog.access.log; #nginx请求日志地址
# ssl证书地址
ssl on;
# pem文件的路径
ssl_certificate /usr/local/webserver/nginx/certificate/your.server.name_chain.crt;
# key文件的路径
ssl_certificate_key /usr/local/webserver/nginx/certificate/your.server.name_key.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 / {
root html;
index index.html index.htm;
}
location /blog {
root /data/sites/blog;
}
}
# http请求直接重定向到https
server {
listen 80; # 监听端口
location /{
return 301 https://your.server.name/;
}
}
}
复制代码
- 重启 nginx 服务
nginx -t
nginx -s reload
复制代码
5. 验证https
经过这步,访问 http://your.server.name/blog
就可以重定向到https://your.server.name/blog
看到小锁已经有了,协议名为https:
参考
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END