共计 2800 个字符,预计需要花费 7 分钟才能阅读完成。
基本概念
日常测试时需要使用Https进行内网测试http2性能,以及模拟部署到线上的相关特性,构建内网域名网站等;
基本概念
- CA:认证机构。有自己的证书,可以拿自己的证书给别人签名然后收钱,这个星球上的CA被几家说英语的人垄断了。在这里我们会虚拟出一个CA机构,然后用他来给自己的证书认证签名。
- (网站)证书 :发送给客户端的证书,其中大部分是公钥。是一个包含自己网站的公钥、认证、签名等信息的文件。
- (网站)私钥 :服务器留存的解密私钥(server)
注意区分 CA机构的证书(可以拿来给其他网站证书签名)和 自己网站的证书(不可以)
所用工具
openssl 自行安装
生成自己的CA根证书
生成 CA 私钥
首先生成自己的CA私钥 -out
后面为生成文件名称一般为key后缀 4096
指定生成私钥的长度 2048 , 4096
等, 建议使用 4096
# 生成ca私钥
openssl genrsa -out ca-private.key 4096
得到 ca-private.key 文件
根据私钥以及配置文件生成证书
ca.conf 配置
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN # 国家两位代码
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = CHONGQING #省市州名称
localityName = Locality Name (eg, city)
localityName_default = CHONGQING # 地区名称
organizationName = Organization Name (eg, company)
organizationName_default = dorthl.io # 公司名称
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64 #通用名称长度
commonName_default = ZHENG ZHI XIN # 通用名称 服务商名字 或者你的名字
根据配置文件生成证书
# 根据私钥生成ca证书签发请求
openssl req -new -sha256 -key ca-private.key -config ca.conf -out ca.csr
# 生成ca根据签发请求得到ca证书
openssl x509 -req -days 3650 -in ca.csr -signkey ca-private.key -out ca.crt
最终生成的证书 在Windows 中显示如下
用自己的CA证书生成网站证书
生成网站证书私钥
# 生成需要签发的服务密钥
openssl genrsa -out dorthl.io-private.key 2048
现网站SSl证书一般私钥长度在 2048
故指定 2048
根据配置文件生成网站证书
dorthl.io.conf
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext # 拓展字段
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN # 国家两位代码
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = CHONGQING #省市州名称
localityName = Locality Name (eg, city)
localityName_default = CHONGQING # 地区名称
organizationName = Organization Name (eg, company)
organizationName_default = dorthl.io # 公司名称
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
commonName_default = *.dorthl.io # 指定颁发的域名 * 为通配
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.dorthl.io #指定域名dns解析记录匹配
DNS.2 = dorthl.io
执行签发
# 生成证书签发请求
openssl req -new -sha256 -key dorthl.io-private.key -config dorthl.io.conf -out dorthl.io.csr
# 用CA证书生成终端用户证书
openssl x509 -req -days 365 -CA ca.crt -CAkey ca-private-key.pem -CAcreateserial \
-in dorthl.io.csr -extensions req_ext -extfile dorthl.io.conf -out dorthl.io.crt
部署需要文件
ca-private.key
CA 证书密钥文件 妥善保存 如需再次签署需要使用到ca.crt
CA证书文件,需要安装到客户端操作系统的受信任的第三方证书颁发机构里面dorthl.io-private.key
,dorthl.io.crt
需要部署到服务器上面
niginx http2 ssl 部署示例配置
worker_processes auto;
...
http{
...
server {
listen 443 ssl http2;
server_name example.dorthl.io;
keepalive_timeout 70;
ssl_certificate /etc/nginx/cert/dorthl.io.crt;
ssl_certificate_key /etc/nginx/cert/dorthl.io-private.key;
ssl_protocols TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
...
}
...
}
配置好 example.dorthl.io
的解析地址后 就可以在客户端访问了
客户端配置
客户端最开始访问的时候可能会出现如下错误提示
以windows为例 需要将 ca.crt
安装到操作系统中 在windows中可直接双击打开 ca.crt
证书文件 点击安装证书 在证书导入中 要手动选择存储位置 保存在 受信任的根证书颁发机构
中
正文完