配置阿里云轻量应用服务器实现全站HTTPS访问

本文最后更新于: 2022年10月10日 下午

[toc]

前言

前段时间,我写了一个基于React+Express+MongoDB的个人网站 www.frmachao.top,现在要给它加上 ssl 证书,来实现全站https访问。

证书

购买免费的证书服务

阿里云盾证书服务

注意: 单域名表示要申请的证书用于绑定1个具体域名(例如,只绑定www.frmachao.top)

D0z6dz

创建证书并进行证书申请操作

gj1Mp8

填写申请信息 并验证 DNS 信息

DdJecL

注意:域名验证记录要在证书签发后再删除,否则因为没有解析记录导致证书签发失败

主机记录值_dnsauth 就是系统自动生成的 域名验证记录 ,因为这里我的域名也是在阿里云解析的,如果你是其他 DNS 服务商解析的,需要自己添加一条这样的域名记录
DJ0NyK

搭建FTP服务器

参考:阿里云文档

Q:为什么要搭建FTP服务器
A:因为要上传证书到服务器,可能有其他方式上传,但是图形界面更直观些。

补充常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
启动服务:systemctl start vsftpd.service

关闭服务:systemctl stop vsftpd.service

重启服务:systemctl restart vsftpd.service

显示服务的状态:systemctl status vsftpd.service

在开机时启用服务:systemctl enable vsftpd.service

在开机时禁用服务:systemctl disable vsftpd.service

查看服务是否开机启动:systemctl is-enabled vsftpd.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

遇到的问题:

  1. FileZilla客户端 连接时的加密方式….. 卡了我半天
    使用文档截图中连接的加密方式时,一直提示连接超时,我以为是配置的FTP服务器有问题,对着文档反复走几遍折腾了 一个小时,最后试了试选择明文连接,结果直接成功了

😭只要没文化 处处是魔法
2YSLJ1

centos 7 安装 nginx + ssl 模块

我购买是阿里云轻量应用服务器 CentOS 7 的镜像
一开始我直接使用yum方式安装的ngninx,但是这种方式安装的ngninx默认是不支持ssl的,所以需要从代码编译安装Nginx

参考:

  1. centos 7 源码方式安装nginx(1.18.0) + ssl + 阿里证书配置

源码安装 Nginx

遇到的问题:

  1. CentOS7中添加环境变量后立即生效,但是重启服务器又失效

原因:添加环境变量到 /etc/profile文件
source /etc/profile 使配置文件生效
参考:CentOS7中添加环境变量后立即生效,但是重启服务器又失效

检查是否已经含有 ssl 模块

1
nginx -V

看到输出里 含有 --with-http_ssl_module 明就是带ssl参数编译的

1
2
3
4
5
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-threads --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module

在Nginx服务器上安装ssl证书

参考: 在Nginx(或Tengine)服务器上安装证书

验证

OAbHnZ

END

学习到的linux命令

1
2
3
4
5
mv  # 移动文件/目录
cp # 复制文件/目录
touch # 用于修改文件或者目录的时间属性,若文件不存在会新建一个
mkdir # 创建目录
ln # 类似windows 中的快捷方式,这是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

linux 中的几种配置环境变量的文件目录

1
2
3
/etc/bashrc 
/etc/profile
/etc/sudoers

另一种方案: Let’s Encrypt

Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG)提供的服务。