## VPS 中生成 csr 和 key 用于 ssl 证书#
当我们要为网站申请 ssl 证书的时候需要准备 csr (证书请求文件), 包含申请证书所需要的相关信息,其中最重要的是域名,填写的域名必须是你要以 https 方式访问的那个域名。
比如我要生成 yus.bio 的证书
需要执行
openssl req -new -newkey rsa:2048 -nodes -keyout yus.key -out yus.csr
此命令将会生成两个文件,cmsky.key 是密钥文件,小心保存好这个文件,安装 SSL 证书的时候要用到。需要根据提示输入相应的信息,如域名等,按照提示一步一步操作,最后生成这两个文件。
Country Name (2 letter code) [AU]: CN (国家代码)
State or Province Name (full name) [Some-State]: Fujian (省)
Locality Name (eg, city) []: Xiamen (城市)
Organizat[iON](http://www.idcbaby.com/tag/418) Name (eg, company) [Internet Widgits Pty Ltd]: Cisco (企业/组织)
Organizational Unit Name (eg, section) []: IT (部门)
Common Name (eg, YOUR name) []: yus.bio (域名/请正确填写)
Email Address []: (可直接回车)
Please enter the following ‘extra’ attributes to be sent with your certificate request
A challenge password []: (直接回车)
An optional company name []: (直接回车)
其中的 Email Address 和 A challenge password 可以留空,不必填写,直接回车。以上需要填写的内容,如果不清楚应该怎么填写,除了域名其它的可以按照上面的内容填写。
之后执行命令
cat yus.csr
就会得到 csr 的内容
另外一个 .key 文件,一定不能搞丢 ,安装的的时候需要用到
## 申请 ssl,获得证书#
如果是在 name.com 注册的域名,可以直接激活
首先得添加 dns 的 A 记录
接着在 ssl 的申请界面中
将上一步获取的 yus.csr 的内容 全部 复制到 ssl 申请界面中的 证书签名请求
点击下一步
就会得到以下证书
其中这个 SERVER CERTIFICATE 就是 pem 证书,将要添加到 VPS 服务器中
vi yus.pem
将 SERVER CERTIFICATE 、CA CERTIFICATE 、ROOT 中的内容复制进去
最后将 yus.pem 和 yus.key 放到 /home/cert 目录下
## VPS 中通过 nginx 安装证书#
### 安装 Nginx#
查看状态
sudo systemctl status nginx
通过 apt 安装
sudo apt-get install nginx -y
启动
默认安装目录为 /etc/nginx
/etc/init.d/nginx start
测试 Nginx 配置是否正确,以后修改配置也常常用到
nginx -t
查看 nginx 版本
nginx -v
Nginx 启动、停止、重启
service nginx start / stop / restart
## 修改配置文件#
例如现在需要把部署在 8090 端口的 halo 应用映射到 https 的 443 端口
- 首先进入 conf.d 目录,添加 halo.conf 文件
内容如下
upstream halo {
server 127.0.0.1:8090;
}
- 接着进入到 sites-enabled 目录
删除默认的 default 文件
添加 halo 文件
vi halo
内容如下
server {
# https 监听的端口为 443
# http 监听的端口为 80
listen 443 ssl http2;
listen [::]:443 ssl http2;
# 需要映射到的域名
server_name www.yus.bio;
# pem 证书的路径
ssl_certificate "/home/cert/yus.pem";
# 生成的 key 的路径
ssl_certificate_key "/home/cert/yus.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
# conf.d 目录中创建的 .conf 文件名
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
}
}
保存后执行
nginx -t
检查是否有配置错误
### 启动 nginx#
最后执行
service nginx restart
成功通过域名访问