如何创建自签https证书

365bet网上娱乐场 📅 2025-09-26 05:34:16 👤 admin 👀 6033 ❤️ 209
如何创建自签https证书

从创建根证书开始,并使用根证书签名证书,适用于需要https加密的场景,Nginx,K8s等。下面将会使用Cloudflare的开源PKI和TLS工具cfssl创建

概览

.crt和.cer:多为PEM或DER编码的证书,仅包含公钥部分

.pem: Base64格式文本文件,能包含公钥,私钥,证书链等信息,灵活性强

.pfx(.p12):二进制格式,包含公钥,私钥,证书链,适用于Windows系统和私钥传输

.der:二进制格式,同城包含证书的公钥,适合Java环境

下载软件1234curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfsslcurl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljsoncurl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfochmod +x cfssl cfssljson cfssl-certinfo

根证书生成默认根证书配置文件config.json和根证书申请文件csr.json12./cfssl print-defaults config > config.json./cfssl print-defaults csr > csr.json

创建根证书配置文件1234567891011121314151617181920cat > ca-config.json << EOF{ "signing": { "default": { "expiry": "876000h" }, "profiles": { "www": { "expiry": "876000h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } }}EOF

创建根证书申请文件123456789101112131415161718192021cat > ca-csr.json << EOF{ "CN": "MyCert Root CA", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Shanghai", "L": "Shanghai", "O": "MyCert Inc", "OU": "MyCert Inf" } ], "ca": { "expiry": "876000h" }}EOF

生成根证书ca.pem和私钥ca-key.pem1./cfssl gencert -initca ca-csr.json | ./cfssljson -bare ca

查看根证书1./cfssl certinfo -cert ca.pem

证书创建证书申请文件server-csr.json12345678910111213141516171819202122cat > server-csr.json << EOF{ "CN": "Mypanda.com", "hosts": [ "123.123.123.123", "Mypanda.com" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "Shanghai", "ST": "Shanghai", "O": "Mypanda Co., Ltd", "OU": "Mypanda Inf" } ]}EOF

生成证书server.pem和私钥server-key.pem1./cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | ./cfssljson -bare server

查看证书1./cfssl certinfo -cert ca.pem

OpenSSL创建根证书和证书创建根证书和证书有下面几种方式,区别为多条命令还是单条命令,亦或无需输入信息一条命令

创建根自签证书下面以创建根证书为例

第一种方式,创建根证书私钥,创建根证书请求文件,然后生成证书

12345678# 创建根证书私钥openssl genpkey -algorithm RSA -out ca.key [-pkeyopt rsa_keygen_bits:2048]# 创建根证书请求文件openssl req -new -key ca.key -out ca.csr# 创建自签名证书openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt# 查看根证书openssl x509 -in ca.crt -text -noout

第二种方式,一条命令生成根证书私钥和根证书

1openssl req -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 365 -out ca.crt

第三种方式,不需要手动输入信息,一条命令生成根证书私钥和根证书

1openssl req -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 365 -out ca.crt -subj "//C=CN/ST=Shanghai/L=Shanghai/O=Organization/OU=OrganizationUnit/CN=Domain"

使用上一步创建的根证书签名证书12345678# 证书私钥openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048# 证书签名请求openssl req -new -key server.key -out server.csr# 签发证书openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256# 查看证书openssl x509 -in server.crt -text -noout

参数说明1234567891011121314-newkey rsa:2024 生成2024位RSA密钥-nodes 生成不加密的私钥文件-keyout ca.key 指定私钥文件名-x509 生成自签名证书-days 365 证书有效期365天-out ca.crt 指定证书名-subj "/C=CN/ST=Shanghai/L=Shanghai/O=Organization/OU=OrganizationUnit/CN=Domain" 指定证书的主题信息,避免手动输入C 国家代码,如中国CNST 州/省名称L 城市名称O 组织名称,如公司名称OU 组织单位名称,如部门名称CN 通用名称,通常是域名或服务器名称

服务器配置证书NginxNginx可以直接使用server.pem证书,配置如下

12345678910server { listen 443 ssl; server_name ; # 证书绑定的域名,IP则注释 ssl_certificate cert/server.pem; # 相对于配置文件的路径 ssl_certificate_key cert/server-key.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 密码套件 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;}

Kestrel/IIS

window server 2019的kestrel服务,需要使用openssl 1.1.x转换的pfx证书,原理暂未确定,见参考

需要把pem证书转换为pfx证书,才可以使用

pem证书转pfx证书12345678# 生成密码openssl rand -base64 10# 使用密码,转换证书openssl pkcs12 -export -out server.pfx -inkey server-key.pem -in server.pem# 查看pfx证书openssl pkcs12 -in server.pfx -info# openssl pkcs12 -clcerts -nokeys -in server.pfx# openssl pkcs12 -in server.pfx -nocerts -nodes

Window PC配置根证书,使浏览器信任自签证书首先把根证书从pem转成pfx,然后添加到受信任的根证书颁发机构位置即可

1openssl pkcs12 -export -out ca.pfx -inkey ca-key.pem -in ca.pem

参考https://blog.csdn.net/robin_cai/article/details/120758214

https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/certificates/

https://www.howtouselinux.com/post/converting-cer-crt-der-pem-pfx-certificate#Convert_PEM_to_DER

https://blog.csdn.net/u010358168/article/details/83508851

https://blog.csdn.net/u014163312/article/details/105744177

🍵 相关养生推荐

Battlerite——冠军盛典上再无战斗仪式
必发365app官网

Battlerite——冠军盛典上再无战斗仪式

📅 09-11 👀 9966
世界杯名人堂--1982
365bet网上平台

世界杯名人堂--1982

📅 08-18 👀 3907
含有亲字的成语有哪些
必发365app官网

含有亲字的成语有哪些

📅 07-10 👀 884
excel中度分秒怎么输入
必发365app官网

excel中度分秒怎么输入

📅 09-04 👀 7159
国风·召南·摽有梅
365bet网上娱乐场

国风·召南·摽有梅

📅 08-15 👀 1825
葡萄牙共7次参加世界杯,而意大利历史只缺席3次
365bet网上娱乐场

葡萄牙共7次参加世界杯,而意大利历史只缺席3次

📅 07-22 👀 3623