openssl req 证书请求和证书生成命令
-new 此选项生成新的证书请求。它将提示用户输入相关字段值。提示的实际字段及其最大和最小大小在配置文件和任何请求的扩展中指定。如果未给出-key选项,它将使用配置文件中指定的信息或通过-newkey和-pkeyopt选项给出的信息生成新的私钥,否则默认情况下为 2048 位长度的 RSA 密钥。
-newkey rsa:2048 除非给出-key, 否则此选项用于生成新的私钥。随后使用它,就像使用-key选项给出的一样。此选项意味着使用-new标志来创建新的证书请求或在给出 -x509 的情况下创建新的证书。
-noenc 如果指定此选项,那么即使创建私钥,也不会对其进行加密。
-nodes 自 OpenSSL 3.0 起,此选项已弃用;使用-noenc代替。
-subj "/C=CN/ST=Beijing/L=Beijing/O=Super Inc./OU=Web Security/CN=$IP"
-x509 此选项输出证书而不是证书请求。 这通常用于生成测试证书。
-keyout 这给出了用于写入新创建的或从-key读取的任何私钥的文件名。如果-keyout选项和-key选项均未给出,则使用配置文件中通过default_keyfile选项指定的文件名(如果存在)。因此,如果您想写入私钥并且提供了-key选项,则应显式提供-keyout选项。如果生成新密钥并且未指定文件名,则该密钥将写入标准输出。
-out $IP.csr
openssl x509 证书显示和签名命令
-req
-days 365
-in $IP.csr
-signkey $IP.key
-out $IP.crt
-extfile http.ext
创建私钥,然后从中生成证书请求:
openssl genrsa -out key.pem 2048
openssl req -new -key key.pem -out req.pem
相同但只是使用 req:
openssl req -newkey rsa:2048 -keyout key.pem -out req.pem
#!/bin/bash
#输入证书使用IP地址
IP=$1
rm $IP.csr $IP.key $IP.crt -f
rm http.ext
cat >> http.ext <<EOF
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[ SubjectAlternativeName ]
IP.1=127.0.0.1
IP.2=$IP
EOF
openssl req -new -newkey rsa:2048 -noenc -out $IP.csr -keyout $IP.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Super Inc./OU=Web Security/CN=$IP"
openssl x509 -req -days 36500 -in $IP.csr -signkey $IP.key -out $IP.crt -extfile http.ext
生成后,电脑安装 *.crt证书
-----------------------------
openssl相关
cp /owncrt/crtificate.key "${crtIFICATES_LIVE_FOLDER:?}/${DOMAIN_OR_PUBLIC_IP}/privkey.pem"
cp /owncrt/crtificate.crt "${crtIFICATES_LIVE_FOLDER:?}/${DOMAIN_OR_PUBLIC_IP}/fullchain.pem"
# SSL Config
ssl_crtificate conf.d/live/fullchain.pem;
ssl_crtificate_key conf.d/live/privkey.pem;
ssl_trusted_crtificate conf.d/live/fullchain.pem;
openssl req -new -nodes -x509 \
-subj "/CN=${DOMAIN_OR_PUBLIC_IP}" -days 365 \
-keyout "xxx-crt/privkey.pem" \
-out "xxx-crt/fullchain.pem" \
-extensions v3_ca
openssl req -new -newkey rsa:2048
-nodes
-keyout my.key
-out my.csr
-subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
---------------------------------------
1、CA根证书的生成步骤
制作 ca.key 私钥 ca.key
openssl genrsa -aes256 -out ca.key 2048
请求证书 ca.csr
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CA/emailAddress=admin@test.com"
自签证书 ca.cer
openssl x509 -req -days 36500 -sha256 -extensions v3_req -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer
2、生成服务端证书
创建服务器私钥 server.key
openssl genrsa -aes256 -out server.key 2048
生成证书请求 server.csr
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=SERVER/emailAddress=admin@test.com"
使用CA证书签署服务器证书 server.cer
openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer
3、生成客户端证书
生成客户端私钥 client.key
openssl genrsa -aes256 -out client.key 2048
申请证书 client.csr
openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CLIENT/emailAddress=admin@test.com"
使用CA证书签署客户端证书 client.cer
openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer
--------------------------------
# 生成根证书私钥 ca.key
openssl genrsa -out ca.key 4096
# 签发根证书,有效期100年 ca.crt
openssl req -new -x509 -key ca.key -out ca.crt -days 36500
# 生成网站私钥 private.key
openssl genrsa -out private.key 4096
# 使用网站私钥生成证书请求文件 private.csr
openssl req -new -out private.csr -key private.key -config ssl.conf
# 签发证书,有效期100年 private.crt
openssl x509 -req -days 36500 -in private.csr -out private.crt -CA ca.crt -CAkey ca.key -extfile ssl.conf -extensions req_ext -CAcreateserial
配置https双向认证时其中
CA.cer是用来安装在浏览器、安卓和苹果设备上的根CA信任证书
server.cer和server.key以及CA.cer是放在服务端的证书和key文件以及CA证书,在Nginx中配置即可。
------------------------
openssl genrsa -out my.key 2048
openssl req -new -key my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
------------------------
测试
# 生成根证书私钥 ca.key
openssl genrsa -out ca.key
# 签发根证书,有效期100年 ca.crt
openssl req -new -x509 -key ca.key -out ca.crt -days 36500 -subj "/CN=CASHWAY"
# 生成网站私钥 private.key
openssl genrsa -out private.key
# 使用网站私钥生成证书请求文件 private.csr
openssl req -new -out private.csr -key private.key -config ssl.conf
# 签发证书,有效期100年 private.crt
openssl x509 -req -days 36500 -in private.csr -out private.crt -CA ca.crt -CAkey ca.key -extfile ssl.conf -extensions req_ext -CAcreateserial
openssl x509 -req -days 36500 -in private.csr -out private.crt -CA ca.crt -CAkey ca.key -extensions req_ext -CAcreateserial