赞
踩
对于SSL/TLS服务器证书,特别是那些用于HTTPS网站的证书,有几个关键的扩展和属性是必要的,以确保证书可以被客户端(如浏览器)正确识别和信任。这些细节对于确保加密连接的安全性至关重要。以下是一些关键的证书详情和扩展:
生成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 = Wfh OU = Wfh Unit CN = Wfh Root CA [ext] basicConstraints = critical,CA:TRUE keyUsage = critical,keyCertSign,cRLSign subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer
请替换[dn部分],这个部分请认真填写,其中
C: 国家
N: 省份
L: 城市
O: 组织
OU: 组织单位
CN :可以理解为根证书的名字,用于区分根证书
这个配置文件定义了证书的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
生成服务器私钥
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 = Wfh OU = Wfh Unit CN = *.xxx.com [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = *.xxx.com
其中subjectAltName(SAN)可以指定多个域名(eg:DNS.2,DNS.3),这里我使用通配符 *,表示子域名都可以使用这个服务器证书
生成服务端证书签名请求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 = *.xxx.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
将生成的私钥(server.key)和证书(server.crt)用于你的Nginx配置。编辑你的Nginx配置文件(通常位于/etc/nginx/目录下),添加或修改以下行来指定证书和私钥的位置:
server {
listen 443 ssl;
server_name app.xxx.com;
ssl_certificate /path/to/your/server.crt;
ssl_certificate_key /path/to/your/server.key;
# 其他配置...
}
重新加载Nginx配置
sudo nginx -s reload
查看另一篇文章:SSL浏览器导入自建证书
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。