背景
某机房内部访问需要配置 HTTPS,网上找的一些证书教程都不是特别好,有些直接生成证书,没有根 CA 的证书导致信任不了 Ubuntu 机器,有些教程只有域名生成,没有 IP 生成,有些甚至报错。故发一个笔者在 Ubuntu 22.04 机器上测试正确可用的流程,这里使用 10.12.0.2 作为例子生成一个证书。
生成
-
生成根 CA 的私钥和证书
# 生成根 CA 的私钥 openssl genrsa -服务器托管网out rootCA.key 2048 # 使用私钥生成根 CA 的证书 openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
-
为
10.12.0.2
生成私钥和证书请求文件(CSR)# 生成 10.12.0.2 的私钥 openssl genrsa -out 10.12.0.2.key 2048 # 使用私钥生成证书请求文件 openssl req服务器托管网 -new -key 10.12.0.2.key -out 10.12.0.2.csr
-
创建证书扩展文件
为了确保为
10.12.0.2
签名的证书能够用作服务器身份验证,需要为它创建一个扩展文件。创建一个名为v3.ext
的文件,并添加以下内容:authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] # 这里 IP 替换成 DNS 就可以签名域名了 IP.1 = 10.12.0.2
-
使用根 CA 的证书为
10.12.0.2
签名证书openssl x509 -req -in 10.12.0.2.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 10.12.0.2.crt -days 500 -sha256 -extfile v3.ext
此时文件夹内应该有以下文件:
-
rootCA.key
– 根 CA 的私钥。 -
rootCA.crt
– 根 CA 的证书。 -
10.12.0.2.key
– 10.12.0.2 的私钥。 -
10.12.0.2.csr
– 10.12.0.2 的证书请求文件。 -
10.12.0.2.crt
– 由根 CA 签名的 10.12.0.2 的证书。
信任
Ubuntu
sudo cp rootCA.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
CentOS
sudo cp rootCA.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
Windows
右键文件,选择安装证书,选择本地计算机,指定安装到受信任的根证书颁发机构,即可
使用
这里拿 ASP.NET CORE 无反代部署举例,复制 10.12.0.2.key
和 10.12.0.2.crt
文件到应用发布目录,之后在 appsettings.json 里加入或修改如下内容,并重启服务即可。
{
// 上面是其他内容
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://*",
"Certificate": {
"Path": "./10.12.0.2.crt",
"KeyPath": "./10.12.0.2.key"
}
}
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解
2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解 文章目录 第1题 —— 2022 (5分) 第2题 —— 钟表 (5分) 第3题 —— 卡牌 (10分) 第4题 —— 最大数字 (10分) 第5题 —— 出差 (15分) 第6题 ——…