openssl,CA证书生成命令集合

合集下载

OpenSSL 命令常用证书操作

OpenSSL 命令常用证书操作

在OpenSSL开发包中,包含一个实用工具:openssl,比如我用MinGW GCC 编译OpenSSL 0.9.8k 后,openssl 就保存在out目录下。

openssl 工具是完成密钥、证书操作和其它SSL 事务的入口环境,直接运行不带参数的openssl 命令后,可以得到一个shell 环境,在其中可以以交互的方式完成SSL 相关的安全事务。

不过有时,如果用一个带参数选项的openssl 命令完成操作,会更方便。

下面是我使用openssl 做证书操作时,记录的常用命令用法。

1.生成密钥生成RSA密钥,保存在file.key中,命令如下:上面命令的含义是:产生RSA密钥,包括:私钥和公钥两部分,然后使用DES3算法,用用户输入的密码(passphrase)加密该密钥数据,保存在file.key中。

file.key默认以BASE64方式编码密钥数据,file.key的格式称为:PEM (Privacy Enhanced Mail)格式,在RFC 1421到RFC 1424中定义,PEM是早期用来进行安全电子邮件传输的标准,但现在广泛用在证书、证书请求、PKCS#7对象的存储上,所以证书文件也经常以.pem为扩展名。

2.不加密的密钥如果在生成密钥时,使用了-des3等加密选项,则会生成被用户密码保护的加密密钥,以增强密钥数据的保密性(因为密钥文件中包含私钥部分)。

但有时为了方便,需要不加密的明文密钥(这样安全性会降低),比如:使用Apache的HTTPS服务,每次启动Apache服务时,都需要用户输入保护密钥的密码,感觉麻烦的话,可以使用明文密钥。

明文密钥可以使用不带-des3等加密选项的openssl命令生成,还可以使用以下命令将加密保护的密钥转换成明文密钥,当然转换过程需要用户输入原来的加密保护密码:3.查看密钥查看保存在file.key中的RSA密钥的细节,如果此文件是加密保护的,会提示用户输入加密此文件的密码,命令如下:输出的内容均是RSA密钥数据的数学信息(模数、指数、质数等),从输出的结果中也可知file.key保存的RSA密钥数据包括:私钥和公钥两部分。

openssl命令查看证书的内容

openssl命令查看证书的内容

openssl命令查看证书的内容通过openssl命令查看已经⽣成或者已经存在的证书的内容openssl x509 -in ca.crt -noout -text⽰例1,查看ca证书的内容[root@nccztsjb-node-23 pki]# openssl x509 -in ca.crt -noout -textCertificate:Data:Version: 3 (0x2)Serial Number: 0 (0x0)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: Jan 20 09:44:28 2022 GMTNot After : Jan 18 09:44:28 2032 GMTSubject: CN=kubernetesSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:f5:96:27:7b:af:82:98:b7:79:6b:40:eb:82:c6:d0:aa:0c:3f:53:0e:94:2b:29:7a:02:22:23:17:80:98:e1:ac:78:6c:fd:e1:9e:38:f9:ea:b7:bc:ec:03:26:6d:8c:c6:3b:26:8b:34:87:62:37:af:ab:89:85:40:f9:76:ab:7d:36:38:b9:34:aa:63:e6:ec:4b:a6:4e:5a:57:ab:29:94:98:00:97:b6:dc:52:b1:a9:1e:6d:42:36:42:20:22:94:d8:ef:bd:c6:ea:8f:ed:68:3f:30:f5:d5:3e:90:50:44:f3:3b:62:e1:0e:74:d4:25:46:c3:60:de:4a:26:bb:a3:53:49:76:45:d3:8a:44:38:21:00:89:10:96:d3:e0:4d:3b:cb:6d:79:30:5b:f3:29:3a:1e:42:f4:6c:92:bf:7a:ab:a6:72:fb:ff:6d:81:08:8e:18:b9:18:98:f5:0d:7d:07:6f:f2:2f:2a:af:96:b8:9a:9a:f5:c0:34:b7:bf:18:05:f7:ef:4b:5b:2c:86:6d:3d:25:4f:b4:37:07:fb:4a:a7:00:6a:d9:62:27:62:54:d7:3e:ec:c5:d0:eb:6f:a1:89:9b:c7:96:53:e9:1a:5f:ba:2f:ef:79:9d:77:87:6c:0c:a8:3f:f6:64:13:ff:b6:7b:c2:f6:3e:58:5a:fc:c3Exponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key Encipherment, Certificate SignX509v3 Basic Constraints: criticalCA:TRUEX509v3 Subject Key Identifier:03:BA:CA:25:E8:A9:B2:D1:06:A2:7C:3C:44:77:A4:6D:91:89:21:3DX509v3 Subject Alternative Name:DNS:kubernetesSignature Algorithm: sha256WithRSAEncryptiondf:7a:4a:9d:9c:7f:2a:12:73:af:28:44:2a:f4:70:9d:9c:3e:d5:16:df:69:fd:e4:11:36:32:27:e9:2b:d2:36:cc:a5:20:9b:41:06:6b:d6:d3:fe:c0:69:62:b9:3c:ef:4b:01:3f:f0:c4:58:6b:ef:66:ba:fd:d7:96:9e:86:7a:f4:83:42:a3:a0:94:da:b9:18:6c:f6:58:c9:cd:51:b0:25:ae:c5:e9:99:3d:1b:af:a6:97:63:88:3e:32:73:59:c9:b0:e9:f0:0f:f0:7d:a1:9c:72:3d:7f:d1:ae:ab:e3:65:c2:93:d8:92:bd:15:13:f7:88:e2:be:f3:fe:ac:c0:3b:cb:a5:03:31:96:25:c7:0b:96:d9:fc:23:a7:00:95:00:b2:36:ac:16:6a:6a:0d:3c:91:71:da:20:58:c7:07:b0:38:9b:12:17:4a:c3:2a:e2:ba:27:89:8c:ff:e6:d1:01:ee:c9:c6:e1:00:12:55:f0:90:62:f8:d5:c7:07:d8:f4:2f:75:17:b0:f0:62:9b:9c:36:c3:b6:0a:2b:ba:5f:80:35:0d:b3:e4:b3:36:be:09:e9:00:9b:7e:21:c5:79:4e:66:f4:94:b0:04:9d:e9:42:ce:f2:86:fd:39:13:d5:03:f3:55:51:ca:5e:c9:51:40:7d:dc:0f:57:6e:2e:d3⽰例2,查看客户端证书内容:[root@nccztsjb-node-23 pki]# openssl x509 -in client.cert -noout -textCertificate:Data:Version: 3 (0x2)Serial Number: 5026910384928549392 (0x45c32c5c83636a10)Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: Jan 20 09:44:28 2022 GMTNot After : Jan 20 09:44:32 2023 GMTSubject: O=system:masters, CN=kubernetes-adminSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:ca:5a:29:d6:fe:f1:f8:b9:2f:66:2e:ca:b5:73:c2:1d:73:0d:a8:cc:5e:39:3e:26:dc:ce:fa:b1:04:33:9d:14:0e:30:d1:da:a6:a1:63:22:7b:72:7c:6f:d6:e0:9e:8e:34:50:f8:5b:01:af:d7:62:e1:4f:a8:27:c5:fe:ed:21:46:1d:3c:2f:ec:6e:ef:61:27:48:7e:9a:63:7f:23:4d:c9:c1:d9:11:05:e2:fc:a4:5c:08:01:88:97:77:18:c5:3f:fb:d6:be:a7:93:8a:9a:32:bd:d8:4f:c8:53:27:2d:63:f5:b9:f5:a8:6c:c6:52:9c:7e:d2:1b:ac:f0:56:5b:16:06:f3:63:db:c7:2c:7b:62:5c:e1:34:96:e2:aa:36:da:fa:02:b8:68:a6:0a:fd:60:83:a0:3f:6d:4e:0f:b3:9f:72:dc:40:75:63:7e:0c:2b:d2:30:7d:a3:19:37:ec:fe:12:1d:81:13:20:64:13:c1:b5:83:3b:e6:a2:64:ea:31:21:e3:7e:de:76:9e:8c:28:b7:ea:d9:4b:12:4c:04:97:64:ee:b8:25:4a:9b:be:6e:5f:5a:b1:16:54:85:0f:85:98:da:61:e6:75:32:33:0b:3a:bb:bb:b0:86:37:6a:c5:e4:2e:08:ee:15:3b:1e:23:d4:7a:92:6e:de:f0:77Exponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Key EnciphermentX509v3 Extended Key Usage:TLS Web Client AuthenticationX509v3 Basic Constraints: criticalCA:FALSEX509v3 Authority Key Identifier:keyid:03:BA:CA:25:E8:A9:B2:D1:06:A2:7C:3C:44:77:A4:6D:91:89:21:3D Signature Algorithm: sha256WithRSAEncryptionbf:64:d4:e5:1d:b7:48:cc:e8:20:51:80:ff:2c:0b:69:1f:a1:18:19:33:55:e1:c5:f1:38:8a:f4:46:ea:e9:0f:c3:45:3c:77:72:78:d6:34:83:10:7c:78:27:a2:17:cc:8e:35:d4:bd:54:2d:98:36:87:63:81:ed:ae:4b:bb:41:fd:d6:26:d9:c1:38:c6:9b:4f:91:e6:6c:8f:6e:00:4b:79:10:78:81:6d:9f:b1:cc:79:ef:5e:dc:1c:72:52:ee:3b:45:39:08:72:4f:2d:c3:80:30:ad:0d:36:81:f8:3f:73:47:66:31:71:7d:fa:ec:57:ce:58:25:2d:37:88:ee:88:e0:1f:2d:87:1b:0c:a3:7b:54:36:92:35:20:fc:2b:8b:73:57:82:e8:d8:f7:a9:e0:ed:23:c3:67:32:01:4c:76:7d:a1:a8:99:bf:2d:93:9d:53:f0:4f:2c:2b:c0:44:00:63:00:71:54:7b:a5:1f:9b:d2:0a:bf:dc:0f:30:a7:53:95:06:a8:ef:95:b0:9e:51:63:2b:fb:ea:7b:5c:7d:02:7c:db:38:74:f0:83:72:0c:6c:67:60:9e:a6:53:ed:f3:71:64:05:eb:5f:f2:12:8c:fd:74:1f:81:3c:7f:ab:22:a7:50:8b:50:c6:ad:52:51:91:41:3a:ba:0a:f4:24。

openssl 操作手册

openssl 操作手册

OpenSSL 是一个强大的安全套接字层密码库,包含了各种加密算法的实现,提供了通用的密码安全服务。

下面是一个简要的OpenSSL 操作手册,包括一些常用的命令和选项:1. 生成密钥对:```openssl genpkey -algorithm RSA -out private_key.pemopenssl rsa -pubout -in private_key.pem -out public_key.pem```2. 生成自签名证书:```cssopenssl req -new -x509 -key private_key.pem -out cert.pem -days 365```3. 生成证书签名请求(CSR):```openssl req -new -key private_key.pem -out request.csr```4. 验证证书签名:```bashopenssl x509 -in cert.pem -text -noout```5. 导出证书为PEM 格式:```bashopenssl x509 -in cert.der -inform DER -outform PEM -out cert.pem```6. 加密数据:```cssopenssl enc -aes-256-cbc -salt -in plaintext.txt -out ciphertext.enc```7. 解密数据:```cssopenssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt```8. 生成随机数:```openssl rand -out random.bin 1024```9. 验证数字签名:```cssopenssl dgst -sha256 -sign private_key.pem -in file.txt -out signature.bin openssl dgst -sha256 -verify public_key.pem -signature signature.bin file.txt```10. 生成Diffie-Hellman 密钥交换参数:```openssl dhparam -out dhparam.pem 2048```11. 生成CA 证书:```cssopenssl req -new -x509 -days 365 -extensions v3_ca -key private_ca_key.pem -out ca.pem```12. 生成服务器证书:```cssopenssl req -new -key private_server_key.pem -out server.reqopenssl x509 -req -days 365 -in server.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out server.pem```13. 生成客户端证书:```cssopenssl req -new -key private_client_key.pem -out client.reqopenssl x509 -req -days 365 -in client.req -CA ca.pem -CAkey private_ca_key.pem -CAcreateserial -out client.pem```这只是一些常见的OpenSSL 命令示例,OpenSSL 还提供了许多其他功能和选项,具体可以参考官方文档或使用`man openssl` 命令来获取完整的操作手册。

Linux命令高级技巧使用openssl生成和管理SSL证书

Linux命令高级技巧使用openssl生成和管理SSL证书

Linux命令高级技巧使用openssl生成和管理SSL证书使用OpenSSL生成和管理SSL证书一、介绍SSL证书是用于保护网站和网络通信安全的重要工具。

OpenSSL是一个开源加密库,能够提供各种加密算法和SSL/TLS协议的实现。

本文将介绍如何使用OpenSSL生成和管理SSL证书的高级技巧。

二、安装OpenSSL首先,确保已经在Linux系统上安装了OpenSSL。

可以通过以下命令来检查OpenSSL是否已安装:$ openssl version如果没有安装,可以使用包管理工具,如apt、yum等进行安装。

三、生成自签名证书自签名证书用于测试环境或本地开发,不需要经过权威机构的认证。

使用OpenSSL可以轻松生成自签名证书。

以下是生成自签名证书的步骤:1. 生成私钥:$ openssl genrsa -out private.key 20482. 生成证书签发请求(CSR):$ openssl req -new -key private.key -out csr.csr在生成CSR的过程中,需要填写一些证书相关的信息,如国家、地区、组织、通用名等。

3. 生成自签名证书:$ openssl x509 -req -in csr.csr -signkey private.key -out certificate.crt生成的certificate.crt即为自签名证书,可以用于配置Web服务器等需要SSL证书的场景。

四、生成CA证书除了自签名证书,我们也可以生成CA(Certificate Authority)证书,以进行证书签发。

以下是生成CA证书的步骤:1. 生成私钥:$ openssl genrsa -out ca.key 20482. 生成证书签发请求(CSR):$ openssl req -new -key ca.key -out ca.csr在生成CSR的过程中,需要填写一些证书相关的信息,如国家、地区、组织、通用名等。

用OpenSSL命令行生成证书文件

用OpenSSL命令行生成证书文件

用OpenSSL命令行生成证书文件证书文件生成也许很多人和本人一样深有体会,使用OpenSSL库写一个加密通讯过程,代码很容易就写出来了,可是整个工作却花了了好几天。

除将程序编译成功外(没有可以使用的证书文件,编译成功了,它并不能跑起来,并不表示它能正常使用,所以......),还需生成必要的证书和私钥文件使双方能够成功验证对方。

找了n多的资料,很多是说的很模糊,看了n多的英文资料,还是没有办法(不知道是不是外国朋友都比较厉害,不用说明得太清?),无意间找到yawl(yawl@)写的文章,难得的汉字(呵呵)。

里面有生成证书部分,说到生成了Certificate Signing Request (CSR)文件后,就有点不太清楚了。

后面生成自签字证书在很多地方都可以找到的,签名这部分,yawl说mod_ssl有比较好的脚本,但是笔者一时找不到,就自己用openssl的ca命令来完成了,也不是很麻烦。

说说本人的操作环境:无盘工作站(有权限问题使用起来不太方便),操作目录是openssl/bin(没办法改不了环境变量,如果你可以改的话,就不用在这个目录下工作了),为了方便本人把apps下的f 也复制到了这个目录下来。

文件名都是以本人使用的来说了:1.首先要生成服务器端的私钥(key文件):openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!去除key文件口令的命令:openssl rsa -in server.key -out server.key2.生成Certificate Signing Request(CSR)openssl req -new -key server.key -out server.csr -config f生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.3.对客户端也作同样的命令生成key及csr文件:openssl genrsa -des3 -out client.key 1024openssl req -new -key client.key -out client.csr -config f4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.openssl req -new -x509 -keyout ca.key -out ca.crt -config f5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config fOpenssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config f现在我们所需的全部文件便生成了.另:client使用的文件有:ca.crt,client.crt,client.keyserver使用的文件有:ca.crt,server.crt,server.key.crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了)。

生成ssl证书和私钥的命令

生成ssl证书和私钥的命令

生成ssl证书和私钥的命令
生成 SSL 证书和私钥的命令取决于您使用的操作系统和工具。

以下是一些常见的生成 SSL 证书和私钥的命令示例:
1. 使用 OpenSSL 命令生成自签名证书和私钥:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out certificate.crt.
2. 使用 OpenSSL 命令生成证书签发请求 (CSR) 和私钥:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.csr.
3. 使用 OpenSSL 命令生成带有 CA 签名的证书和私钥:
openssl genrsa -out private.key 2048。

openssl req -new -key private.key -out csr.csr.
openssl x509 -req -days 365 -in csr.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out certificate.crt.
4. 使用 Certbot 工具生成 Let's Encrypt 免费证书:
certbot certonly --standalone --email your-
*****************************************.com.
请注意,以上命令仅为示例,实际使用时需要替换为您自己的信息和配置。

同时,确保您已经安装了相应的工具和软件,例如OpenSSL 或 Certbot。

使用openssl生成证书(含openssl详解)

使用openssl生成证书(含openssl详解)

使⽤openssl⽣成证书(含openssl详解)⼀、openssl 简介openssl 是⽬前最流⾏的 SSL 密码库⼯具,其提供了⼀个通⽤、健壮、功能完备的⼯具套件,⽤以⽀持SSL/TLS 协议的实现。

官⽹:构成部分1. 密码算法库2. 密钥和证书封装管理功能3. SSL通信API接⼝⽤途1. 建⽴ RSA、DH、DSA key 参数2. 建⽴ X.509 证书、证书签名请求(CSR)和CRLs(证书回收列表)3. 计算消息摘要4. 使⽤各种 Cipher加密/解密5. SSL/TLS 客户端以及服务器的测试6. 处理S/MIME 或者加密邮件⼆、RSA密钥操作默认情况下,openssl 输出格式为 PKCS#1-PEM⽣成RSA私钥(⽆加密)openssl genrsa -out rsa_private.key 2048⽣成RSA公钥openssl rsa -in rsa_private.key -pubout -out rsa_public.key⽣成RSA私钥(使⽤aes256加密)openssl genrsa -aes256 -passout pass:111111 -out rsa_aes_private.key 2048其中 passout 代替shell 进⾏密码输⼊,否则会提⽰输⼊密码;⽣成加密后的内容如:-----BEGIN RSA PRIVATE KEY-----Proc-Type: 4,ENCRYPTEDDEK-Info: AES-256-CBC,5584D000DDDD53DD5B12AE935F05A007Base64 Encoded Data-----END RSA PRIVATE KEY-----此时若⽣成公钥,需要提供密码openssl rsa -in rsa_aes_private.key -passin pass:111111 -pubout -out rsa_public.key其中 passout 代替shell 进⾏密码输⼊,否则会提⽰输⼊密码;转换命令私钥转⾮加密openssl rsa -in rsa_aes_private.key -passin pass:111111 -out rsa_private.key私钥转加密openssl rsa -in rsa_private.key -aes256 -passout pass:111111 -out rsa_aes_private.key私钥PEM转DERopenssl rsa -in rsa_private.key -outform der-out rsa_aes_private.der-inform和-outform 参数制定输⼊输出格式,由der转pem格式同理查看私钥明细openssl rsa -in rsa_private.key -noout -text使⽤-pubin参数可查看公钥明细私钥PKCS#1转PKCS#8openssl pkcs8 -topk8 -in rsa_private.key -passout pass:111111 -out pkcs8_private.key其中-passout指定了密码,输出的pkcs8格式密钥为加密形式,pkcs8默认采⽤des3 加密算法,内容如下:-----BEGIN ENCRYPTED PRIVATE KEY-----Base64 Encoded Data-----END ENCRYPTED PRIVATE KEY-----使⽤-nocrypt参数可以输出⽆加密的pkcs8密钥,如下:-----BEGIN PRIVATE KEY-----Base64 Encoded Data-----END PRIVATE KEY-----三、⽣成⾃签名证书⽣成 RSA 私钥和⾃签名证书openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crtreq是证书请求的⼦命令,-newkey rsa:2048 -keyout private_key.pem 表⽰⽣成私钥(PKCS8格式),-nodes 表⽰私钥不加密,若不带参数将提⽰输⼊密码;-x509表⽰输出证书,-days365 为有效期,此后根据提⽰输⼊证书拥有者信息;若执⾏⾃动输⼊,可使⽤-subj选项:openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=/emailAddress=yy@"使⽤已有RSA 私钥⽣成⾃签名证书openssl req -new -x509 -days 365 -key rsa_private.key -out cert.crt-new 指⽣成证书请求,加上-x509 表⽰直接输出证书,-key 指定私钥⽂件,其余选项与上述命令相同四、⽣成签名请求及CA 签名使⽤ RSA私钥⽣成 CSR 签名请求openssl genrsa -aes256 -passout pass:111111 -out server.key 2048openssl req -new -key server.key -out server.csr此后输⼊密码、server证书信息完成,也可以命令⾏指定各类参数openssl req -new -key server.key -passin pass:111111 -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=vihoo/OU=dev/CN=/emailAddress=yy@"*** 此时⽣成的 csr签名请求⽂件可提交⾄ CA进⾏签发 ***查看CSR 的细节cat server.csr-----BEGIN CERTIFICATE REQUEST-----Base64EncodedData-----END CERTIFICATE REQUEST-----openssl req -noout -text -in server.csr使⽤ CA 证书及CA密钥对请求签发证书进⾏签发,⽣成 x509证书openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -passin pass:111111 -CAcreateserial -out server.crt其中 CAxxx 选项⽤于指定CA 参数输⼊五、证书查看及转换查看证书细节openssl x509 -in cert.crt -noout -text转换证书编码格式openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem合成 pkcs#12 证书(含私钥)** 将 pem 证书和私钥转 pkcs#12 证书 **openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:111111 -password pass:111111 -out server.p12其中-export指导出pkcs#12 证书,-inkey 指定了私钥⽂件,-passin 为私钥(⽂件)密码(nodes为⽆加密),-password 指定 p12⽂件的密码(导⼊导出)** 将 pem 证书和私钥/CA 证书合成pkcs#12 证书**openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:111111 \-chain -CAfile ca.crt -password pass:111111 -out server-all.p12其中-chain指⽰同时添加证书链,-CAfile 指定了CA证书,导出的p12⽂件将包含多个证书。

利用openssl签署CA证书的方法

利用openssl签署CA证书的方法

利⽤openssl签署CA证书的⽅法证书的⽅法签署CA证书虽然在安装MOD_SSL时已经使⽤ make certificate 命令建⽴了服务器的证书签名,但是有时你可能需要改变它。

有很多⾃动的脚本可以实现它,但是最可靠的⽅法是⼿⼯签署证书。

下⾯就两种⽅法做⼀下总结:⼀、⼿⼯⾸先我假定你已经安装好了openssl和MOD_SSL,如果你的openssl安装时的prefix设置为/usr/local/openssl,那么把/usr/local/openssl/bin加⼊执⾏⽂件查找路径。

还需要MOD_SSL源代码中的⼀个脚本,它在MOD_SSL的源代码⽬录树下的pkg.contrib⽬录中,⽂件名为 sign.sh。

将它拷贝到 /usr/local/openssl/bin 中。

第⼀步:先建⽴⼀个 CA 的证书,⾸先为 CA 创建⼀个 RSA 私⽤密钥,[S-1]openssl genrsa -des3 -out ca.key 1024系统提⽰输⼊ PEM pass phrase,也就是密码,输⼊后牢记它。

⽣成 ca.key ⽂件,将⽂件属性改为400,并放在安全的地⽅。

[S-2]chmod 400 ca.key你可以⽤下列命令查看它的内容,[S-3]openssl rsa -noout -text -in ca.key利⽤ CA 的 RSA 密钥创建⼀个⾃签署的 CA 证书(X.509结构)[S-4]openssl req -new -x509 -days 3650 -key ca.key -out ca.crt然后需要输⼊下列信息:Country Name: cn 两个字母的国家代号State or Province Name: An Hui 省份名称Locality Name: Bengbu 城市名称Organization Name: Family Network 公司名称Organizational Unit Name: Home 部门名称Common Name: Chen Yang 你的姓名Email Address: sunstorm@ Email地址⽣成 ca.crt ⽂件,将⽂件属性改为400,并放在安全的地⽅。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多级证书平时我们自己签发CA证书再签发服务器证书的场景其实都非常简单。

浏览器把自签CA导入后,就可以信任由这个CA直接签发的服务器证书。

但是实际上网站使用的证书肯定都不是由根CA直接签发的,比如淘宝登陆服务器使用的证书。

我之前是自己写了脚本由自签CA直接签发服务器证书,为了真清楚的理解一下证书链的作用就直接使用openssl先签发2层的子CA,再由子CA去签发服务器证书。

手动签发证书的脚本如下:生成自签CA# cat makerootca.sh#!/bin/bashDIR=/root/ssl.test2mkdir -p $DIR/demoCA/{private,newcerts}touch $DIR/demoCA/index.txtecho 01 > $DIR/demoCA/serialopensslgenrsa -des3 -out $DIR/demoCA/private/cakey.pem 2048opensslreq -new -x509 -days 3650 -key $DIR/demoCA/private/cakey.pem -out$DIR/demoCA/careq.pem签发二级CA的脚本f/root/ssl.test2# cat no2domain.sh#!/bin/bash[ $# -ne 1 ] && echo "$0 NAME" && exitNAME=$1DIR=/root/ssl.test2/autogetmkdir -p $DIRopensslgenrsa -des3 -out $DIR/$NAME.key 2048openssl x509 -in $DIR/../demoCA/careq.pem -noout -textopensslrsa -in $DIR/$NAME.key -out $DIR/$NAME.keyopensslreq -new -days 3650 -key $DIR/$NAME.key -out $DIR/$NAME.csropensslca -extensions v3_ca -in $DIR/$NAME.csr -config $DIR/../f -days 3000 -out $DIR/$NAME.crt -cert $DIR/../demoCA/careq.pem -keyfile$DIR/../demoCA/private/cakey.pem签发三级CA的脚本# cat no3domain.sh#!/bin/bash#[ $# -ne 1 ] && echo "$0 NAME" && exitNAME=calv3DIR=/root/ssl.test2/autogetopensslgenrsa -des3 -out $DIR/$NAME.key 2048openssl x509 -in $DIR/../demoCA/careq.pem -noout -textopensslrsa -in $DIR/$NAME.key -out $DIR/$NAME.keyopensslreq -new -days 3650 -key $DIR/$NAME.key -out $DIR/$NAME.csropensslca -in $DIR/$NAME.csr -extensions v3_ca -config $DIR/../f -days 3000-out $DIR/$NAME.crt -cert $DIR/calv2.crt -keyfile $DIR/calv2.key由三级CA签发服务器证书的脚本# cat no4domain.sh#!/bin/bash[ $# -ne 1 ] && echo "$0 NAME" && exitNAME=$1DIR=/root/ssl.test2/autogetopensslgenrsa -des3 -out $DIR/$NAME.key 2048openssl x509 -in $DIR/../demoCA/careq.pem -noout -textopensslrsa -in $DIR/$NAME.key -out $DIR/$NAME.keyopensslreq -new -days 3650 -key $DIR/$NAME.key -out $DIR/$NAME.csropensslca -in $DIR/$NAME.csr -config $DIR/../f -days 3000 -out $DIR/$NAME.crt -cert $DIR/calv3.crt -keyfile $DIR/calv3.keyopenssl pkcs12 -export -inkey $DIR/$NAME.key -in $DIR/$NAME.crt -out$DIR/$NAME.p12openssl x509 -in $DIR/$NAME.crt -noout -text > $DIR/$NAME.txtsh no4domain.sh当我们把使用三级CA签发的服务器证书配置在nginx上时,在已经导入根CA的浏览器上肯定是会遇到证书报警的,然后依次把三级CA(no3.crt )和二级CA(no2.crt)追加到服务器证书后面,浏览器ssl链接成功,点击证书查看如下图:========================================================================== =================[weigw@TESTsrc]$ opensslrsa -in privatekey.key -pubout -out pubkey.key writing RSA key格式转换:(证书、私钥、公钥)(PEM <—–>DER)[weigw@TESTsrc]$ openssl x509 -in cacert.crt -inform. PEM -out cacert.der -outform. DER[weigw@TESTsrc]$[weigw@TESTsrc]$ opensslrsa -in privatekey.key -inform. PEM -out privatekey.der -outform. DERwriting RSA key[weigw@TESTsrc]$ opensslrsa -pubin -in pubkey.key -inform. PEM -pubout -out pubkey.der-outform. DERwriting RSA key从DER格式转换成PEM格式一样,就是把inform的格式改成DERoutform的格式改成PEM即可。

openssl x509 -in asdfaa.pem -noout–textopensslreq -in root-req.csr -noout -textopensslrsa–in **.key=============================================================================== ========================================================一、PFX证书生成:CA:IP:192.168.80.118路径:/etc/pki/CA/newcerts步骤:cd /etc/pki/CA/newcerts# 生成用户的 RSA 密钥对openssl genrsa -des3 -out userkey.pem# 生成用户证书请求openssl req -new -days 365 -key userkey.pem -out userreq.pem# 使用 CA 签发用户证书openssl ca -in userreq.pem -out usercert.pem#生成PFX证书:openssl pkcs12 -export -inkeyz_key.pem -in z.pem -out z.p12#从PFX证书导出公钥(仅公钥):openssl pkcs12 -in user.pfx -out certificate.cer -nodes二、crt证书生成:openssl CA 服务器:IP:192.168.80.234路径:/var/MyCA命令(注:前两条命令不需要再执行了,只执行最后一条命令即可,绿色字段根据实际改动):opensslgenrsa -des3 -out server.key 2048opensslreq -new -x509 -key server.key -out ca.crt -days 3650openssl x509 -req -days 3650 -in z.req-CA root-cert.pem -CAkeyroot-key.pem -CAcreateserial -out z.pemopenssl命令生成CA证书环境:openssl-e.tar.gz + ActivePerl-5.8.8.820-MSWin32-x86-274739.msi 制作数字证书本系统的开发涉及到的证书主要是X.509和PKCS#12两种格式的证书,其证书的结构如下:证书生成过程生成证书的相关命令:(1)创建私钥:Openssl命令:opensslgenrsa -out root-key.pem 1024说明:root-key里应该是有一对密钥,即public-private密钥对。

(2)创建证书请求Openssl命令:opensslreq -new -out root-req.csr -key root-key.pem说明:创建证书请求时,需要从root-key.pem里提取public key, 创建除证书之外的其他证书,要使用自己的key文件。

(3)自签署证书:Openssl命令:openssl x509 -req -in root-req.csr -out root-cert.pem -signkey root-key.pem -days 365说明:用root-key.pem进行签署证书请求,有效期为365天,如果有CA,此步骤应该由CA来做。

(4)其它证书用CA来签署Openssl命令:openssl x509 -req -in a-req.csr -out a-cert.pem -CA root-cert.pem -CAkey root-key.pem -CAcreateserial -days 365说明:用CA来签发其它证书。

相关文档
最新文档