于SSL/TLS服务器证书,特别是那些用于HTTPS网站的证书,有几个关键的扩展和属性是必要的,以确包管书可以被客户端(如浏览器)正确辨认和信托。这些细节对于确保加密连接的安全性至关紧张。以下是一些关键的证书详情和扩展:
- 主题备用名称 (Subject Alternative Name, SAN)
SAN字段允许证书指定多个资源名称(好比,多个域名或IP地址)。对于现代的浏览器和客户端,此字段险些是必需的,由于它们会检察访问的域名是否包罗在证书的SAN中。
- 密钥用途 (Key Usage, KU)
这个扩展定义了证书的密钥可以执行的安全操作。对于服务器证书,通常需要包括“数字签名”(digitalSignature)(证实信息是由私钥持有者签名的)和“密钥加密”(keyEncipherment)(允许使用公钥加密数据,以便只有对应的私钥持有者可以解密)。
- 扩展密钥用途 (Extended Key Usage, EKU)
EKU进一步细化了证书的使用场景。对于HTTPS服务器证书,这通常包括“服务器身份验证”(serverAuth)标识符,表明该证书可以用于验证服务器的身份。
- 根本束缚 (Basic Constraints)
对于根证书或任何中心CA证书,根本束缚必须设置为CA(证书颁发机构)=TRUE,并且可选地包罗一个路径长度束缚,这指定了从该CA到最终叶子证书之间的中心CA数量上限。对于一个终端实体(好比服务器或客户端)的证书,CA通常应设置为FALSE。
- CRL分布点 (CRL Distribution Points)
这个扩展包罗了获取证书吊销列表(CRL)的URL,客户端可以使用这些URL来检查证书是否已被吊销。
- 证书策略 (Certificate Policies)
证书策略定义了颁发证书的策略或用途。固然这不是技术上逼迫的,但它提供了关于证书可能被接受用途的信息。
确保这些扩展和属性正确设置是创建SSL/TLS证书的紧张部分,特别是当你打算让证书被公众信托的客户端(如互联网浏览器)接受时。如果你是自己天生这些证书(好比用OpenSSL),需要确保在证书签名请求(CSR)和/或在证书天生过程中正确指定这些属性。
1、天生根证书
天生rsa私钥
openssl genpkey -algorithm RSA -out rootCA.key -pkeyopt rsa_keygen_bits:2048
创建根证书的配置文件
为了确保包罗所有必要的扩展,最好创建一个配置文件(好比命名为rootCA.conf)来定义证书的参数和扩展:
- [req]
- default_bits = 2048
- prompt = no
- default_md = sha256
- distinguished_name = dn
- [dn]
- C = CN
- ST = GuangDong
- L = ShenZhen
- O = lll
- OU = lll Unit
- CN = lll Root CA
- [ext]
- basicConstraints = critical,CA:TRUE
- keyUsage = critical,keyCertSign,cRLSign
- subjectKeyIdentifier = hash
- authorityKeyIdentifier = keyid:always,issuer
复制代码 这个配置文件定义了证书的DN(Distinguished Name)和一些关键的扩展,如basicConstraints、keyUsage等。
天生自签名根证书(10年有用期):
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem -config rootCA.conf -extensions ext
2. 天生服务器的证书
天生服务器私钥
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048
创建证书签名请求(CSR)
创建一个名为server.csr.conf的配置文件,以包罗CSR的详细信息
- [req]
- default_bits = 2048
- prompt = no
- default_md = sha256
- distinguished_name = dn
- req_extensions = req_ext
- [dn]
- C = CN
- ST = GuangDong
- L = ShenZhen
- O = lll
- OU = lll Unit
- CN = *.lll.com
- [req_ext]
- subjectAltName = @alt_names
- [alt_names]
- DNS.1 = *.lll.com
复制代码 天生CSR
openssl req -new -key server.key -out server.csr -config server.csr.conf
使用根证书签发服务器证书
创建一个新的配置文件(好比v3.ext)来定义签发的证书应该包罗的扩展
- authorityKeyIdentifier=keyid,issuer
- basicConstraints=CA:FALSE
- keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
- subjectAltName = @alt_names
- [alt_names]
- DNS.1 = *.leve.com
复制代码 签发证书(IOS经测试最大支持825天有用期):
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 825 -sha256 -extfile v3.ext
证书过期可使用此下令重新天生
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |