使用openssl自签发证书(含IP及泛域名证书)

一、创建根证书

1、创建根证书密钥

openssl genrsa -out PrivateRootCA.key 2048

2、使用以下命令生成CSR

openssl req -new -sha256 -key PrivateRootCA.key -out PrivateRootCA.csr

3、生成证书并自签名

openssl x509 -req -sha256 -days 3650 -in PrivateRootCA.csr -signkey PrivateRootCA.key -out PrivateRootCA.crt

4、或者使用以下命令一键生成v3版证书

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout PrivateRootCA.key -out PrivateRootCA.crt -reqexts v3_req -extensions v3_ca

二、为单个域名签发证书

1、创建密钥

openssl genrsa -out example.com.key 2048

2、创建请求文件

openssl req -new -sha256 -key example.com.key -out example.com.csr

3、生成证书并用根证书签名(要使浏览器信任,则必须加入x509v3扩展,加入备用名称<(printf "subjectAltName=DNS:example.com",且最长有效期为397天)

openssl x509 -req -in example.com.csr -CA PrivateRootCA.crt -CAkey PrivateRootCA.key -CAcreateserial -days 397 -out example.com.crt -extfile <(printf "subjectAltName=DNS:example.com")

4、如果需要导出pfx,需要指定证书密码

openssl pkcs12 -export -out example.com.pfx -inkey example.com.key -in example.com.crt

三、使用配置文件,为多个域名签发证书

1、创建密钥

openssl genrsa -out example.com.key 2048

2、准备多域名文件列表,配置文件内容:
[req]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
encrypt_key = no
default_md  = sha256
req_extensions = req_ext

[req_distinguished_name]
commonName_default = www.example.com
commonName_max = 64
organizationName_default = Example Technology Co.,Ltd.
organizationalUnitName_default = IT Support Dept
localityName_default = NanChang
stateOrProvinceName_default = JiangXi
countryName_default = CN

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = *.example00.com
DNS.3 = www.example.com
DNS.4 = *.example01.com
IP.1 = 192.168.0.1
IP.2 = 10.0.0.1

配置文件字段说明:

  • commonName_default: 证书的主域名
  • organizationName_default: 企业/单位名称
  • organizationalUnitName_default:企业部门
  • localityName_default: 城市
  • stateOrProvinceName_default: 省份
  • ountryName_default: 国家代码,一般都是CN(大写)
  • [alt_names]: 后面为备用名称列表,可以是域名、泛域名、IP地址
3、配置好该文件后,保存为san.conf,然后运行下面命令:

openssl req -new -nodes -out myreq.csr -config san.conf -subj "/" -batch

4、最后CSR文件在myreq.csr中,私钥在private.pem中。接下来用根证书签发:

openssl x509 -req -in myreq.csr -CA PrivateRootCA.crt -CAkey PrivateRootCA.key -CAcreateserial -days 397 -out mycom.crt -extfile san.conf -extensions req_ext

四、将根证书导入到操作系统中(Ubuntu)

$ sudo cp PrivateRootCA.crt /usr/local/share/ca-certificates #添加证书
$ sudo rm -f /usr/local/share/ca-certificates/PrivateRootCA.crt #删除证书
$ sudo update-ca-certificates

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇