使用OpenSSL生成根证书并自签署证书

生成根CA的私钥和证书

bash 复制代码
# 生成根 CA 的私钥
[root@developer ssl]# openssl genrsa -out rootCA.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
...+++++
............................................................+++++
e is 65537 (0x010001)

# 使用私钥生成根 CA 的证书
[root@developer ssl]# openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
Country Name (2 letter code) [XX]:CN  # 国家名称(2个字母代码)
State or Province Name (full name) []:JS  # 州或省名
Locality Name (eg, city) [Default City]:KS  # 地点名称
Organization Name (eg, company) [Default Company Ltd]:local  # 组织名称
Organizational Unit Name (eg, section) []:developer  # 组织单位名称
Common Name (eg, your name or your server's hostname) []:Local Developer CA  # 通用名称
Email Address []:

为hello-world.test生成私钥和证书请求文件(CSR)

bash 复制代码
# 生成 hello-world.test 的私钥
[root@developer ssl]# openssl genrsa -out hello-world.test.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
..........................................................................+++++
.....+++++
e is 65537 (0x010001)

# 使用私钥生成证书请求文件
[root@developer ssl]# openssl req -new -key hello-world.test.key -out hello-world.test.csr
Country Name (2 letter code) [XX]:CN  # 国家名称(2个字母代码)
State or Province Name (full name) []:JS  # 州或省名
Locality Name (eg, city) [Default City]:KS  # 地点名称
Organization Name (eg, company) [Default Company Ltd]:local  # 组织名称
Organizational Unit Name (eg, section) []:developer  # 组织单位名称
Common Name (eg, your name or your server's hostname) []:*.hello-world.test  # 域名
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

创建证书扩展文件

为了确保为 hello-world.test 签名的证书能够用作服务器身份验证,需要为它创建一个扩展文件。创建一个名为 v3.ext 的文件,并添加以下内容:

复制代码
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.hello-world.test
# 如果是IP就使用 IP.1 = 你的IP地址

使用根 CA 的证书为 hello-world.test 签名证书

bash 复制代码
[root@developer ssl]# openssl x509 -req -in hello-world.test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out hello-world.test.crt -days 500 -sha256  -extfile v3.ext
Signature ok
subject=C = CN, ST = JS, L = KS, O = local, OU = developer, CN = *.hello-world.test
Getting CA Private Key

此时文件夹内应该有以下文件:

bash 复制代码
[root@developer ssl]# ll
-rw-r--r--. 1 root root 1318 5月  23 09:59 rootCA.crt
-rw-------. 1 root root 1675 5月  23 09:59 rootCA.key
-rw-r--r--. 1 root root   41 5月  23 10:14 rootCA.srl
-rw-r--r--. 1 root root  253 5月  23 10:13 v3.ext
-rw-r--r--. 1 root root 1322 5月  23 10:14 hello-world.crt
-rw-r--r--. 1 root root  997 5月  23 10:02 hello-world.csr
-rw-------. 1 root root 1679 5月  23 10:00 hello-world.key

宝塔部署

宝塔网站设置中SSL选项选择当前证书,密钥(KEY)中填入hello-world.key的内容,证书(PEM格式)中填入hello-world.crt的内容,最后将rootCA.crt安装到电脑的本地受信任的根证书颁发机构中。

相关推荐
胡八一7 小时前
k8s 配置 Kafka SASL_SSL双重认证
kafka·kubernetes·ssl
CRMEB定制开发7 小时前
打开小程序提示请求失败(小程序页面空白)
小程序·https·ssl
LFloyue16 小时前
单机Kafka配置ssl并在springboot使用
spring boot·kafka·ssl
诗意地回家1 天前
Ubuntu nginx 配置 SSL 证书支持 https 请求
nginx·ubuntu·ssl
老王笔记1 天前
MySQL迁移SSL报错
ssl
看到千里之外的云2 天前
Oracle 11g post PSU Oct18 设置ssl连接(使用jks)
数据库·oracle·ssl
看到千里之外的云3 天前
Oracle 11g post PSU Oct18 设置ssl连接(使用wallets)
数据库·oracle·ssl
fishernemo3 天前
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
网络·网络协议·ssl
小程序照片合成4 天前
window xampp apache使用腾讯云ssl证书配置https
apache·腾讯云·ssl