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,并放在安全的地⽅。

Openssl命令详解-证书篇

Openssl命令详解-证书篇

Openssl命令详解-证书篇⽣成⾃签证书# 设置CA证书subjectCA_SUBJ="/C=CN/ST=ShanDong/L=JiNan/O=sec/OU=sec/CN=/emailAddress=hxy@"# 1. ⽣成rsa⾃签CAopenssl req -x509 -newkey rsa:2048 -keyout pri.key -out ca.crt -days 3650 -nodes \-subj $CA_SUBJ# 2. ⽣成sm2⾃签CA (以下也可以使⽤openssl 1.1.x以上版本)gmssl ecparam -genkey -name SM2 -text -out pri.keygmssl req -new -key pri.key -out ca.csr -subj $CA_SUBJgmssl x509 -req -days 3650 -sm3 -in ca.csr -signkey pri.key -out ca.crt# 3. ⽣成ecc⾃签CAopenssl ecparam -out pri.key -name prime256v1 -genkeyopenssl req -key pri.key -new -out ca.csr -subj $CA_SUBJopenssl x509 -req -in ca.csr -signkey pri.key -out ca.crt -days 3650# 4. ⽣成pkcs8格式的私钥openssl pkcs8 -topk8 -in pri.key -out pkcs8_pri.key -nocrypt查看私钥和证书# 1. 查看私钥openssl ec -in pri.key -text #解析ec类私钥(包括sm2)openssl rsa -in pri.key -text #解析rsa私钥# 2. 查看证书x509openssl x509 -in ca.crt -text -noout命令详情(以ec为例)1. ⽣成⾃签名证书2. 私钥保护3. 查看私钥4. 查看证书。

Linux下用Openssl生成证书

Linux下用Openssl生成证书

用openssl签发ssl x.509证书Linux及Openssl版本:首先在/home目录下建立ssl目录:cd /homemkdir sslcd ssl建立几个要用到的目录:mkdir private certs newcerts crl其中private主要用来存放私钥的.certs用于存入签出的证书cp /usr/share/ssl/f .将配置文件复制到当前目录构建相关文件:echo 构建索引文件index.txtecho 0>index.txtecho 构建序列号文件serialecho 01>serial设定环境变量export OPENSSL_CONF="/home/ssl/f" 更改f中的配置:dir = /home/ssl产生一个随机数文件:openssl rand -out /home/ssl/private/.rand 1000下面才开始建立根证书:1.制作私钥:openssl genrsa -des3 -out private/ca.key.pem 2048这来细细讲一下这条命令:openssl指进入openssl环境,genrsa 是openssl中的一个小应用程序,用来产生rsa私钥。

-des3是指将产生的私钥用triple DES进行加密。

这是个可选项,还有-des -idea都是对称加密算法,随你自己选择. -out就是指定输出了,如果不加这个选项的话,就会将输出发到标准输出中.2048指私钥的长度,单们是bit,默认是512输入这条命令后,产生私钥,提示你设定密码.2.填写证书申请表:openssl req -new -key private/ca.key.pem -out ca.req.pem 提示你私钥的密码,一步一步输入就行了。

因为证书中要有公钥,和个人信息,所以我们指定私钥,程序推导出公钥,供申请表用。

3.自己签定根签书:openssl x509 -req -days 1000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in ca.req.pem -out certs/ca.crt.pem其中的days是指证书的有效天数,shda1是消息摘要函数算法,默入为md5,-signkey指定用于签证的私钥,运行过程中,要输入私钥的密码和设定书密码。

嵌入式设备CA证书的生成步骤

嵌入式设备CA证书的生成步骤

1、环境准备1.1 向设备添加动态库文件(用于支持openssl生成证书请求文件):libssl.so.6、libgssapi_krb5.so.2、libkrb5.so.3、libcom_err.so.2、libk5crypto.so.3、libresolv.so.2、libkrb5support.so.0、1.2 创建所需结点:mknod /dev/random c 1 8mknod /dev/urandom c 1 91.3 放置生成证书的工具:在设备上根目录新建文件夹/path/to : mkdir -p /path/to将openssl-bin.tar.bz2 解压到设备/path/to目录下,并给/path/to/openssl/bin目录下的文件赋予可执行权限。

2、制作需CA(Certificate Authority)签署证书2.1、生成私钥进入/path/to/openssl/bin目录下,执行方式一:./openssl genrsa -des3 1024 >server.key注:采用DES3加密新产生的私钥server.key文件,每次要使用这个私钥时都要用输入密码。

如果您的电子证书是用在apache等服务器中,您每次启动服务器时都要输入密码一次。

方式二:./openssl genrsa 1024 >server.key注:采用128位rsa算法生成密钥server.key文件,这种方法产生的证书在apache 等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。

我们采用方式二生成私钥。

2.2 生成证书请求文件(Certificate Signing Request)./openssl req -new -key server.key > server.csr注:这是用步骤1的密钥生成证书请求文件server.csr, 这一步输入内容和创建自签名证书的内容类似,按要求输入就可以了。

Ubuntu使用OpenSSL生成数字证书详解

Ubuntu使用OpenSSL生成数字证书详解

Ubuntu使用OpenSSL生成数字证书详解在安全通信编程中有时我们会用到数字证书进行通信加密,那么如何生成自己的数字证书进行测试呢?下面是使用OpenSSL在Ubuntu环境生成数字证书的步骤:一、安装openssla) 略二、生成ca证书a) 创建一个证书目录,mkdir /home/liuzhigong/SSLb) 将CA.sh拷贝到/home/liuzhigong/SSL目录,cp /usr/lib/ssl/misc/CA.sh /home/liuzhigong/SSLc) ./CA.sh -newcad) 根据提示填写信息完成后,在demoCA下会生成证书文件,其中demoCA/private/cakey.pem为ca证书私钥,demoCA/cacert.pem为ca根证书。

三、生成服务器证书a) 生成私钥:openssl genrsa -des3 -out server.key 1024b) 生成csr文件:openssl req -new -key server.key -out server.csrc) 生成证书&签名:openssl ca -in server.csr -out server.crt四、生成客户端证书a) 生成私钥:openssl genrsa -des3 -out client.key 1024b) 生成csr文件:openssl req -new -key client.key -out client.csrc) 生成证书&签名:openssl ca -in client.csr -out client.crt五、生成浏览器支持的.pfx(.p12)证书安装过支付宝、财付通证书的用户都知道,证书文件格式为pfx,那如何把我们的数字证书转换为浏览器识别的格式呢?a) openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx六、生成不带密码验证的client/server.key.unsecure如果你想要把数字证书用于Nginx、Apache等Web服务器,你会发现启动nginx服务器时会要求你输入数字证书密码,这是因为在设置私钥key时将密码写入了key文件,导致Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase。

Openssl指令介绍

Openssl指令介绍

Openssl指令介绍(中文版本)目录前言............................................................... 1openssl简介-证书.. (2)openssl简介-加密算法 (8)openssl简介-协议 (10)openssl简介-入门 (12)openssl简介-指令 verify (14)openssl简介-指令asn1parse (18)openssl简介-指令ca(一) (20)openssl简介-指令ca(二) (24)openssl简介-指令cipher (26)openssl简介-指令dgst (31)openssl简介-指令dhparam (32)openssl简介-指令enc (34)openssl简介-指令gendsa (39)openssl简介-指令genrsa (40)openssl简介-指令passwd (41)openssl简介-指令pkcs7 (42)openssl简介-指令rand (43)openssl简介-指令req(一) (44)openssl简介-指令req(二) (47)openssl简介-指令rsa (50)openssl简介-指令rsautl (52)openssl简介-指令s_client(一) (56)openssl简介-指令s_client(二) (59)openssl简介-指令s_server (63)openssl简介-指令sess_id (66)openssl简介-指令speed (68)openssl简介-指令version (69)openssl简介-指令x509(一) (70)openssl简介-指令x509(二) (74)前言不久前接到有关ssl的活,结果找遍中文网站资料实在奇缺。

感觉是好象现在国内做这个技术的人不多。

所有有兴趣写点东西来介绍一下。

我使用的ssl的toolkit是openssl就用openssl做例子来讲解openssl实在太大了,指令也多,API也多,更严重的是它的API没有说明。

openssl生成证书及吊销列表

openssl生成证书及吊销列表

openssl生成证书及吊销列表一,先来讲讲基本概念。

证书分类:按类型可以分为CA证书和用户用户证书,我们我说的root也是特殊的CA证书。

用户证书又可以根据用途分类,放在服务器端的称为服务器证书,放在客户端一般称为客户端证书(这种说法不是很准确,只是一种理解。

实际应该是在对客户端认证时才会用到客户端证书且root、ca证书都可以放在客户端),记住,这两种证书都应为用户证书。

一般可以理解为证书由key和证书(没有key的文件也称为证书)组成,谁拥有这两个东西才真正拥有这个证书。

好比锁是有钥匙和锁头组成的,你得两都有。

你只有锁头锁住东西,却没有钥匙打开,也没什么用。

如果你对证书不了解,那一定要知道证书这三点作用(纯个人认为比较重要三点):1,签名:通过签名技术可以保证证书拥有者的唯一性,而且所有信息没有被篡改。

想了解数字签名的自己百度一下。

2,提供公钥:通过签名技术知道证书拥有者是A,且所有信息都是A,就可以拿到A的公钥算法及公钥。

所以有些人理解为证书就是一个公钥(个人认为这种理解与实际偏差较大)。

3,颁发者:找到颁发者很重要,每个证书都有一个颁发者。

这个在证书认证时用得到。

对于用户(人)来说还是通过证书名称来区分证书,下面讲解几种常见的证书。

a).cert或.crt文件:这种证书倒是可以理解为公钥证书,因为它最主要的作用就是来提供公钥的,只是一种理解,签名认证这些作用一样不会少。

这种文件不含有key,就好像一个打开的锁头,可以发给任何人。

所以拥有.cer或.crt文件的不是真正的拥有者,因为你可以用证书里的公钥加密,但并没有私钥解密。

b).pfx文件:这种证书文件可以理解为.cer文件与key结合体,即拥有.pfx证书相当同时拥有公钥与私钥。

即可以加密也可以解密。

c).key文件:就是钥匙啦。

锁头可以给任何人,但是钥匙只能自己保留,所以这玩意一定要保存好。

d).p7b文件:为证书链文件,也不含私钥。

openssl命令分类(最完整)

openssl命令分类(最完整)

声明:1.此文档中,证书生成时口令、密码一律是:12345.方便排查;2.另外,所有命令均可在Openssl在线文档中查询;3.本文档,支持命令检索,所有命令首字母大写;一、证书类1.1证书申请:Req1)Req生成和处理PKCS10证书,证书申请文件;用法:Openssl req [-inform PEM|DER ] [-in filenames] [-passin arg] [-config filename] [batch][-newkey rsa:bits] [-new] [-rand file:rand dat] [-text] [-days] [-x509][-subj arg /CN=china/OU=tt/O=ab/CN=fxx] [-utf8] [-noout] [-keyout] [-pubkey]其中,-inform 指定输入格式;-newkey rsa:bits 用于生成新的rsa密钥以及证书请求;默认名称为privkey.pem;-new 生成新的证书请求以及私钥,默认1024bits-rand 随机数种子文件;-rand file: rand.dat;-config file 指定证书请求模板,默认为f;-subj arg 制定证书请求的用户信息;不指定,则要求输入;-subj /CN=cn/OU=t/O=a;-utf8 指定为utf8,默认为ASCII编码;-batch 不询问用户请求;-newhdr 在生成的PEM证书请求文件头尾包含NEW字样;有些CA需要;-pubkey 获取证书请求中的公钥信息;-modulus 输出请求中的模数;-text 打印证书信息;-verify 验证证书请求;-x509 生成自签名证书;-md5/4/2/sha1/mdc2 生成自签名证书时,指定摘要算法;-days生成自签名证书的有效期;例子:#生成证书申请和私钥> req -new -batch -out myreq.pem #只有-new需要输入subj等;加入-batch则不需要输入;> req -newkey rsa:1024 -out myreq1.pem -keyout reqkey.pem> req -new -subj /CN=china/OU=tt/O=ab/CN=dzr#查看公钥信息;可见其中包含证书请求;> req -in myreq.pem -pubkey -out pubkey.pem> req -in myreq.pem -pubkey -text> req -in myreq.pem -text> req -in myreq.pem -modulus #所谓模数> req -in pubkey.pem -modulus> req -in pubkey.pem -text#生成自签名证书> req -in myreq.pem -x509 -key reqkey.pem -out mycert.pem -days 300 -text -md5 1.2消息格式:PKCS71)pkcs7加密消息语法,各种消息存放的格式标准;包括数据、签名、摘要、数字信封等;用于处理DER或者PEM格式的pkcs7文件用法:Openssl pkcs7 [-inform PEM][-outform] [-in ][-print_certs][-text][noout]其中,-print_certs 打印证书或CRL,每行打出持有者和颁布者;-text 打印相关信息;例子:#没有pkcs7文件,可通过crltopkcs7生成;Openssl> pkcs7 -in myreq.pem -outform DER -out myreq_pkcs7.derOpenssl> pkcs7 -in file.pem print_certs -out certs.pem1.3 个人证书:PKCS121)pkcs12工具,用于生成和分析pkcs12文件用法:Openssl pkcs12 [export][ chain][inkey][cedrtfile][CApath][CAfile][name][out][aes128][des3][password][rand]其中,-export 输出pkcs12文件;-chain 添加证书链;-inkey 指定私钥文件;-certfile file添加file中所有证书文件;-CApath arg 指定CA文件目录;-CAfile arg 指定CA文件;-name 指定证书和私钥的友好名;-in 指定私钥和证书读取的文件,为PEM格式;-out 指定输出的pkcs12文件,默认为标准输出;-nomacver 读取时不验证MAC;-clcerts 只输出客户证书,不包含CA证书;-nokeys 不输出私钥;-info 输出pkcs12结构信息;-des3/ase128 私钥加密算法;-nodes 不对私钥加密;-maciter 加强完整性保护,多次计算MAC;-descert 用3DES加密pkcs12文件,默认RC2-40;-keysig 设置私钥只能用于签名;例子:#生成pkcs12,不带CA证书> pkcs12 -export -inkey reqkey.pem -in mycert.pem -out mypkcs12.pfx> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -out myPkcs12.pfx#生成,带CA证书> pkcs12 -export -inkey CA_key.pem -in CAreq_cert.pem -CAfile ../cacert.pem -chain -out ocsp1.pfx#信息分离出来写入文件;> pkcs12 -in myPkcs12.pfx -out certandkey.pem#显示pkcs12信息> pkcs12 -in myPkcs12.pfx -info1.3 转换证书:PKCS810.pkcs8私钥转换工具,pkcs8格式用法:Openssl pkcs8 [inform ][outform][in ][passin][out][topk8][noiter][v2][embed]其中,-topk8 输出pkcs8文件;-noiter MAC保护计算次数为1;-nooct 不采用8位组表示私钥;-embed 采用嵌入式DSA参数格式;-v2 alg 采用PKCS5 v2.0 并指定加密算法;例子:#私钥转换为pkcs8文件;比较前后文件内容,的确不同的格式;Openssl> pkcs8 -in CA_key.pem -topk8 -out mypkcs8key.pem#以明文存放> pkcs8 -in CA_key.pem -topk8 -nocrypt -out my8key_plain.pem1.5证书中心:Ca1)Ca一个小型的CA系统,签发证书请求和生成CRL,维护一个已签发证书状态的文本数据库。

openssl生成自签CA和pkcs12证书

openssl生成自签CA和pkcs12证书

openssl⽣成⾃签CA和pkcs12证书基础环境mkdir Testcd Testmkdir -p ./CA/{private,newcerts}touch CA/index.txttouch CA/serialtouch CA/crlnumberecho01 > CA/serialecho01 > CA/crlnumbercp /etc/pki/tls/f ./# 修改dir为当前CA⽬录vim f [ CA_default ] dir = ./CA# 增强型密钥,客户端⾝份认证 [ v3_req ] keyUsage = nonRepudiation,digitalSignature extendedKeyUsage = clientAuth⽣成CA证书# ⽣成CA私钥(umask 077;openssl genrsa -des3 -out ./CA/private/cakey.pem 2048)# ⽣成ca证书openssl req -new -x509 -days 365 -key ./CA/private/cakey.pem -out ./CA/cacert.pem -subj "/C=CN/ST=GD/L=SZ/O=organization/OU=dev/CN=/emailAddress=aa@"⽣成⽤户证书# user私钥(umask 077;openssl genrsa -out userkey.pem 2048)# 签署请求openssl req -new -days 365 -key userkey.pem -out userreq.pem -subj "/C=CN/ST=GD/L=SZ/O=organization/OU=dev/CN=/emailAddress=aa@"# ⽣成user证书openssl ca -in userreq.pem -out usercert.pem -extensions v3_req -config f# ⽣成pkcs12证书openssl pkcs12 -export -inkey userkey.pem -in usercert.pem -out user.pfx# rm ./CA/index.txt && touch ./CA/index.txt 重新⽣成user证书吊销⽤户证书# 吊销user证书openssl ca -revoke usercert.pem -cert ./CA/cacert.pem -keyfile ./CA/private/cakey.pem# ⽣成user证书吊销列表openssl ca -gencrl -out rootca.crl -cert ./CA/cacert.pem -keyfile ./CA/private/cakey.pem -config f。

RPM安装httpd openssl mod_ssl后生成密钥、CSR、CA和证书过程

RPM安装httpd openssl mod_ssl后生成密钥、CSR、CA和证书过程

RPM安装httpd+openssl+mod_ssl后生成密钥、CSR、CA和证书过程一、制作密钥(私钥)1、cd /etc/httpd/conf/ssl.key2、openssl genrsa [-des3] –out test.local.key [1024]二、生成CSR1、cd ../ssl.scr2、openssl req –new –key ../ssl.key/test.local.key –out ./test.local.csr三、创建CA1、cd /etc/httpd/conf/ssl.prm2. /usr/share/ssl/misc/CA –newca此时,会在/etc/httpd/conf/ssl.prm/demoCA目录下生成CA公钥(cacert.prm),私钥(private/cakey.prm),以及目录certs,crl,newcerts,private, 文件index.txt和serial 。

四、用CA密钥签发CSR请求,生成CRT证书1、cd /etc/httpd/conf/ssl.prm2. openssl ca –in ../ssl.csr/test.local.csr –out ../ssl.crt/test.local.crt –days 365 –config /usr/share/ssl/f还可以用参数-keyfile来指定CA密钥(cakey.prm)的位置,-cert来指定CA证书(cacert.prm)的位置。

可以通过openssl ca –help来看帮助。

或者,自签发CRT证书:1)cd /etc/httpd/conf ; 2) openssl req –x509 –key ./ssl.key/test.local.key –in ./ssl.csr/test.local.csr –out ./ssl.crt/test.local.crt至此,我们已经为apache生成了SSL密钥、CSR和CRT了。

windowsopenssl命令用法

windowsopenssl命令用法

windowsopenssl命令用法
Windows上的OpenSSL命令用法如下:
1.生成RSA私钥:
genrsa -out rsa_private_key.pem 1024
该命令将生成一个名为rsa_private_key.pem的RSA私钥文件,其中1024是私钥的长度。

2.生成自签名证书:
css
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -sha256
该命令将生成一个私钥文件(key.pem)和一个自签名的X.509证书文件(cert.pem)。

其中,-x509表示生成自签名证书,-newkey rsa:4096表示生成一个4096位的RSA密钥对,-keyout key.pem指定私钥文件的输出路径和名称为key.pem,-out
cert.pem指定证书文件的输出路径和名称为cert.pem,-days 365指定证书的有效期为365天,-sha256表示使用SHA-256算法进行
证书签名。

请注意,这只是OpenSSL命令的一部分用法示例,具体的命令参数和选项可能因版本或特定的需求而有所不同。

建议查阅OpenSSL的官方文档或使用openssl help命令获取更详细的帮助信息。

使用openssl生成证书

使用openssl生成证书

使用OpenSSL生成CA证书和签发用户证书李志平在这里我们使用OpenSSL自带的CA.pl来创建CA证书,使用它来签发用户证书,这个文件放在/usr/ssl/misc/CA.pl(我们假设把OpenSSL安装在/usr下)。

1.创建文件夹ca,存放要生成的CA证书和用户证书[root@localhost ~]# mkdir ca[root@localhost ~]# cd ca[root@localhost ca]#2.将/usr/ssl/misc/CA.pl和/usr/ssl/f拷贝到当前目录ca中[root@localhost ca]# cp /usr/ssl/misc/CA.pl ./[root@localhost ca]# cp /usr/ssl/f ./3.创建CA证书。

执行./CA.pl –newca需要填写如下:(红字部分是需要填写的,其中“按回车键”表示直接按回车键,有输入内容的,输入内容后再按回车键)[root@localhost ca]#./CA.pl -newcaCA certificate filename (or enter to create)(按回车键)Making CA certificate ...Generating a 1024 bit RSA private key...........++++++.............++++++writing new private key to './demoCA/private/cakey.pem'Enter PEM pass phrase:(输入密码,比如:1234)Verifying - Enter PEM pass phrase:(确认密码:1234)-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:BJLocality Name (eg, city) []:BJOrganization Name (eg, company) [Internet Widgits Pty Ltd]:IBM Organizational Unit Name (eg, section) []:IBMCommon Name (eg, YOUR name) []:benEmail Address []:ben@Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:(按回车键)An optional company name []:(按回车键)Using configuration from /usr/ssl/fEnter pass phrase for ./demoCA/private/cakey.pem:(输入刚才的密码:1234)Check that the request matches the signatureSignature okCertificate Details:Serial Number:f9:53:35:b7:23:ff:c0:04ValidityNot Before: Jun 23 13:50:44 2010 GMTNot After : Jun 22 13:50:44 2013 GMTSubject:countryName = CNstateOrProvinceName = BJorganizationName = IBMorganizationalUnitName = IBMcommonName = benemailAddress = ben@X509v3 extensions:X509v3 Subject Key Identifier:DD:F6:B8:17:6F:91:F6:33:BB:FB:8B:85:71:A4:70:47:E7:03:A5:0F X509v3 Authority Key Identifier:keyid:DD:F6:B8:17:6F:91:F6:33:BB:FB:8B:85:71:A4:70:47:E7:03:A5:0FX509v3 Basic Constraints:CA:TRUECertificate is to be certified until Jun 22 13:50:44 2013 GMT (1095 days)Write out database with 1 new entriesData Base Updated[root@localhost ca]#至此,公共证书已经创建。

  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来签发其它证书。

相关文档
最新文档