环境:VPS:CentOS8
1.申请域名
通过阿里云申请一个域名就好,博主申请了个人域名.top,第一年6元
2.添加一条IPV4的DNS解析记录
阿里云-控制台-域名解析-解析设置-添加新纪录
这里不再赘述,参照阿里云的域名解析记录添加教程就可以了。
3.配置服务端http-server
配置httpd不是我们的重点。
不清楚的同学可以参考别的博客
我找了找这篇博客相对比较详细,需求也简单。https://www.cnblogs.com/heian99/p/11972314.html
另外,我们的httpd服务只要保证
http://你的域名.xxx/
可以访问到就可以了,因为我们随后要准备配置https了。
4.自认证SSL证书配置
完成以上3步之后,你就拥有一个属于自己可以访问的网站了,但是目前只限于http,当你的网站涉及客户端到服务端数据交互的时候,
它将极其容易被攻击 HTTP与HTTPS的区别
接下来我们将开始申请与配置SSL证书。
安装openssl
yum -y install mod_ssl openssl
修改ssl.conf
vi /etc/httpd/conf.d/ssl.conf
切换到ca目录(若无请自行创建),并创建openssl.kxmida.top.conf(任何名称都可以)
cd /etc/httpd/ca
因为我们需要配置2个以上的域名,所以需要配置文件来设置我们域名信息
openssl.kxmida.top.conf(任何名称都可以):
# openssl.kxmida.top - config
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
req_extensions = v3_req
# 域名
[ req_distinguished_name ]
# Minimum of 4 bytes are needed for common name
commonName = kxmida.top
commonName_default = www.kxmida.top
commonName_max = 64
# 国家
# ISO2 country code only
countryName = China
countryName_default = CN
# 省的名字
# State is optional, no minimum limit
stateOrProvinceName = Province
stateOrProvinceName_default = 你的省份
# 城市的名字
# City is required
localityName = City
localityName_default = 你的城市
# 公司名称
# Organization is optional
organizationName = Organization
organizationName_default = 你的公司
# 部门名称
# Organization Unit is optional
organizationalUnitName = Department
organizationalUnitName_default = 你的部门
# 联系邮箱
# Email is optional
emailAddress = Email
emailAddress_default = 你的邮箱
# 拓展信息配置
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
# 要配置的域名
[alt_names]
DNS.1 = kxmida.top
DNS.2 = www.kxmida.top
创建私钥 文件名自取
openssl genrsa -out kxmida.top.key 2048
生成csr文件 -config 刚才创建的配置文件
openssl req -new -nodes -out kxmida.top.csr -key kxmida.top.key -config openssl.kxmida.top.conf
生成自签名证书 -days 设置证书过期时间
openssl x509 -req -days 3650 -in kxmida.top.csr -signkey kxmida.top.key -out kxmida.top.cert -extensions v3_req -extfile openssl.kxmida.top.conf
这样的话我们就生成了https服务基本所需要的,自认证证书(多域名),密钥,csr证书请求文件。
接下来将证书以及密钥部署到我们ssl配置文件中指定的目录。
cp /etc/httpd/ca/kxmida.top.cert /etc/pki/tls/certs/
cp /etc/httpd/ca/kxmida.top.key /etc/pki/tls/private/
完成之后,重启httpd服务
systemctl restart httpd
尝试访问网站:
点击高级,继续前往。
可以看到,https服务已经生效,也就是说我们向服务器交互的数据已经得到SHA1算法(openssl默认,若有需求可以查询openssl参数自行指定)的保护,但是由于我们配置的是自签名证书,所以并不被chrome所认可。
接下来通过let's encript 认证我们的证书。
5.证书认证
CA证书认证机构有很多,这里博主选择Let's Encrypt
申请证书的流程:选择DNS验证 ——> 域名管理平台:添加域名DNS解析记录 ——> 是否通过CAA解析 ----是----> 解析挑战 ——> 发布证书
登录https://freessl.org/ 一个提供Let’s Encrypt 的CA 的免费 HTTPS 证书申请的平台,可以进行证书管理。
输入自己的域名,可以用;分割,申请多域名,点击创建。
点击创建。
之后会基于你提供的域名数量,生成DNS解析记录。
我们需要将这些生成的记录添加到域名的解析记录当中。
添加方法如下:
登录你的阿里云域名解析管理页面,
添加完成之后,可以在freessl上点击【配置完成,检测一下】。会跳转以下页面
注意网站的提醒:
1:(提示:模拟检测以下地区有一个匹配,订单系统就会向CA提交验证,能否签发以CA检测为准)
有一个匹配既可以申请
2:
注意:
现在所有CA都需要对域名型证书进行CAA检查,不论DNS验证,还是文件验证,都必须要通过CAA检查, 如果CAA检查超时:
- 更换NS服务器,目前我们观察国内很多DNS服务提供商都是可以支持CAA查询的。
- 更换OV/EV证书来申请,OV/EV是由人工介入审核。
“ 最初CAA为自愿实施:CA可以决定是否检查该记录。但是,2017年3月,CA/浏览器论坛投票赞成一项规则,将使所有证书颁发机构强制施行CAA。自2017年9月起,所有证书颁发机构都必须实施CAA检查。”
关于第二点,我们可以检测一下是否可以通过CAA解析我们的域名:
在验证页面点击DNS解析诊断,选择CAA查询,点击检测。
如果你的域名显示不能匹配,那说明你的域名没有添加CAA解析记录,需要在你的域名解析记录中添加(CAA记录添加见本博客末尾附录)。
如果CAA检测通过,并且DNS挑战每一条都通过,那么freessl会生成你的认证证书,它是由Let's Encript签发的。
下载完成之后,替换掉我们之前生成的自认证证书就可以了。别忘了修改ssl.conf文件。
vi /etc/httpd/conf.d/ssl.conf
证书存放目录:
cd /etc/pki/tls/certs/
将证书放在这里:
重启httpd
systemctl restart httpd
再次访问我们的网站
变成了第三方认证的安全链接。
注意:证书有效期只有三个月,到期之后要重新申请。
以上。
附录:CAA解析记录添加
CAA解析记录详解参照别的大神的博客,https://yq.aliyun.com/articles/280424
这里博主只记录一下添加流程
登录阿里云域名管理平台,添加CAA解析记录。
依次添加生成的CAA解析记录即可。
添加完成之后别忘了登录https://freessl.org/去测试一下。