当前的网络浏览器带有由证书颁发机构颁发和签名的预安装中间证书。
密钥算法
- RSA 1024: 不安全
- RSA 2048[网站常用]: 安全
- RSA 4096: 根CA与中间CA使用
- 尽管4096位比2048位更安全,但它会减慢TLS握手速度并显着增加握手期间的处理器负载。因此,大多数网站使用2048位对。
- 椭圆曲线 ECC [推荐]: 安全, 速度快, 且密钥尺寸小很多
- 256位的ECC安全效果等同于 3072位的RSA
注意
- 更安全的做法, 使用中间CA来颁发审核通过的证书:
- 创建证书链文件: 我们的证书链文件必须包含根证书,因为尚无客户端应用程序知道该证书。更好的选择(尤其是在管理Intranet的情况下)是在需要连接的每个客户端上安装根证书。在这种情况下,链文件仅需要包含您的中间证书。
cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
- 使用私钥创建证书签名请求(CSR): 对于服务器证书,“ 公用名”必须是完全限定的域名(例如www.example.com ),而对于客户端证书,“ 公用名”可以是任何唯一标识符(例如,电子邮件地址)。请注意,公用名不能与您的根证书或中间证书相同。
- 通常 根CA证书有效期 20年(-days 7300), 中间CA证书有效期10年(-days 3650), 服务器或客户端证书1年多几天(-days 375)
- 要创建证书,请使用中间CA对CSR进行签名。如果证书将在服务器上使用,请使用server_cert扩展名。如果证书将用于用户身份验证,请使用 usr_cert扩展名
- -extensions server_cert
- -extensions usr_cert
ECC [推荐]
- secp256k1 (握手时会报错)
- prime256v1 == secp256r1 (不安全: 棱镜门)
- secp384r1 [推荐]
用根ca颁发的服务器证书
# CA证书及密钥生成方法----直接生成CA密钥及其自签名证书(有效期3650天)
openssl req -newkey ec:<(openssl ecparam -name secp384r1) -nodes -keyout ca-prikey.pem -x509 -days 3650 -out ca-cert.pem -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=Root CA/[email protected]"
# 服务器证书及密钥生成方法----直接生成服务器密钥及待签名证书
# 注意: CN 一定要写服务器所在的ip地址(本地测试用 本地测试127.0.0.1)或域名
openssl req -newkey ec:<(openssl ecparam -name secp384r1) -nodes -keyout node-prikey.pem -out node-req.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=127.0.0.1/[email protected]"
# 使用CA证书及密钥对服务器证书进行签名(有效期3650天):
openssl x509 -req -days 3650 -in node-req.csr -CA ca-cert.pem -CAkey ca-prikey.pem -CAcreateserial -out node-cert.pem
# 客户端证书及密钥生成方法----直接生成客户端密钥及待签名证书
# CN 可以填平台账户名或链上账户名
openssl req -newkey ec:<(openssl ecparam -name secp384r1) -nodes -keyout client-prikey.pem -out client-req.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=CLIENT/[email protected]"
# 使用CA证书及密钥对客户端证书进行签名(有效期3650天):
openssl x509 -req -days 3650 -in client-req.csr -CA ca-cert.pem -CAkey ca-prikey.pem -CAcreateserial -out client-cert.pem
RSA 2048
用根ca颁发的服务器证书
# CA证书及密钥生成方法----直接生成CA密钥及其自签名证书(有效期3650天)
openssl req -newkey rsa:2048 -nodes -keyout ca-prikey.pem -x509 -days 3650 -out ca-cert.pem -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=Root CA/[email protected]"
# 服务器证书及密钥生成方法----直接生成服务器密钥及待签名证书
# 注意: CN 一定要写服务器所在的ip地址(本地测试用 本地测试127.0.0.1)或域名
openssl req -newkey rsa:2048 -nodes -keyout node-prikey.pem -out node-req.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=127.0.0.1/[email protected]"
# 使用CA证书及密钥对服务器证书进行签名(有效期3650天):
openssl x509 -req -days 3650 -in node-req.csr -CA ca-cert.pem -CAkey ca-prikey.pem -CAcreateserial -out node-cert.pem
# 客户端证书及密钥生成方法----直接生成客户端密钥及待签名证书
# CN 可以填平台账户名或链上账户名
openssl req -newkey rsa:2048 -nodes -keyout client-prikey.pem -out client-req.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=XENIRO/OU=Snapscale/CN=CLIENT/[email protected]"
# 使用CA证书及密钥对客户端证书进行签名(有效期3650天):
openssl x509 -req -days 3650 -in client-req.csr -CA ca-cert.pem -CAkey ca-prikey.pem -CAcreateserial -out client-cert.pem
文章评论