openssl_pem证书

Openssl之PEM系列 作者: LaoKa 20080426

1.PEM编码文件结构介绍 PEM全称是Privacy Enhanced Mail,该标准定义了加密一个准备要发送邮件的标准,主要用来将各种对象保存成PEM格式,并将PEM格式的各种对象读取到相应的结构中。它的基本流程是这样的: 1. 信息转换为ASCII码或其它编码方式; 2. 使用对称算法加密转换了的邮件信息; 3. 使用BASE64对加密后的邮件信息进行编码; 4. 使用一些头定义对信息进行封装,这些头信息格式如下(不一定都需要,可选的): Proc-Type,4:ENCRYPTED DEK-Info: cipher-name, ivec其中,第一个头信息标注了该文件是否进行了加密,该头信息可能的值包括ENCRYPTED(信息已经加密和签名)、MIC-ONLY(信息经过数字签名但没有加密)、MIC-CLEAR(信息经过数字签名但是没有加密、也没有进行编码,可使用非PEM格式阅读)以及CLEAR(信息没有签名和加密并且没有进行编码,该项好象是openssl自身的扩展,但是并没有真正实现);;第二个头信息标注了加密的算法以及使用的ivec参量,ivec其实在这儿提供的应该是一个随机产生的数据序列,与块加密算法中要使用到的初始化变量(IV)不一样。 5. 在这些信息的前面加上如下形式头标注信息: -----BEGIN PRIVACY-ENHANCED MESSAGE----- 在这些信息的后面加上如下形式尾标注信息: -----END PRIVACY-ENHANCED MESSAGE----- 上面是openssl的PEM文件的基本结构,需要注意的是,Openssl并没有实现PEM的全部标准,它只是对openssl中需要使用的一些选项做了实现,详细的PEM格式,请参考RFC1421-1424。 下面是一个PEM编码的经过加密的DSA私钥的例子: -----BEGIN DSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,F80EEEBEEA7386C4

GZ9zgFcHOlnhPoiSbVi/yXc9mGoj44A6IveD4UlpSEUt6Xbse3Fr0KHIUyQ3oGnSmClKoAp/eOTb5Frhto85SzdsxYtac+X1v5XwdzAMy2KowHVk1N8A5jmE2OlkNPNtof132MNlo2cyIRYaa35PPYBGNCmUm7YcYS8O90YtkrQZZTf4+2C4kllhMcdkQwkrFWSWC8YOQ7w0LHb4cX1FejHHom9Nd/0PN3vn3UyySvfOqoR7nbXkrpHXmPIr0hxXRcF0aXcV/CzZ1/nfXWQf4o3+oD0T22SDoVcZY60IzI0oIc3pNCbDV3uKNmgekrFdqOUJ+QW8oWp7oefRx62iBfIeC8DZunohMXaWAQCU0sLQOR4yEdeUCnzCSywe0bG1diD0KYaEe+Yub1BQH4aLsBgDjardgpJRTQLq0DUvw0/QGO1irKTJzegEDNVBKrVnV4AHOKT1CUKqvGNRP1UnccUDTF6miOAtaj/qpzra7sSk7dkGBvIEeFoAg84kfh9hhVvF1YyzC9bwZepruoqoUwke/WdNIR5ymOVZ/4Liw0JdIOcq+atbdRX08niqIRkfdsZrUj4leo3zdefYUQ7w4N2Ns37yDFq7 -----END DSA PRIVATE KEY----- 有时候PEM编码的东西并没有经过加密,只是简单进行了BASE64编码,下面是一个没有加密的证书请求的例子: -----BEGIN CERTIFICATE REQUEST----- MIICVTCCAhMCAQAwUzELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAxMDUENBMIIBtTCCASkGBSsOAwIMMIIBHgKBgQCnP26Fv0FqKX3wn0cZMJCaCR3aajMexT2GlrMV4FMuj+BZgnOQPnUxmUd6UvuF5NmmezibaIqEm4fGHrV+hktTW1nPcWUZiG7OZq5riDb77Cjcwtelu+UsOSZL2ppwGJU3lRBWI/YV7boEXt45T/23Qx+1pGVvzYAR5HCVW1DNSQIVAPcHMe36bAYD1YWKHKycZedQZmVvAoGATd9MA6aRivUZb1BGJZnlaG8w42nh5bNdmLsohkj83pkEP1+IDJxzJA0gXbkqmj8YlifkYofBe3RiU/xhJ6h6kQmdtvFNnFQPWAbuSXQHzlV+I84W9srcWmEBfslxtU323DQph2j2XiCTs9v15AlsQReVkusBtXOlan7YMu0OArgDgYUAAoGBAKbtuR5AdW+ICjCFe2ixjUiJJzM2IKwe6NZEMXg39+HQ1UTPTmfLZLps+rZfolHDXuRKMXbGFdSF0nXYzotPCzi7GauwEJTZyr27ZZjA1C6apGSQ9GzuwNvZ4rCXystVEagAS8OQ4H3D4dWS17Zg31ICb5o4E5r0z09o/Uz46u0VoAAwCQYFKw4DAhsFAAMxADAuAhUArRubTxsbIXy3AhtjQ943AbNBnSICFQCu+g1iW3jwF+gOcbroD4S/ZcvB3w== -----END CERTIFICATE REQUEST----- 可以看到,该文件没有了前面两个头信息。大家如果经常使用openssl的应用程序,就对这些文件格式很熟悉了。

2.PEM类型和实现结构介绍 openssl中定义的PEM相关结构体如下(openssl\pem.h),这些结构体是所有PEM系列函数的基础。 下面定义的是PEM一个高层应用结构,该结构通过PEM_SealInit进行初始化,最后使用PEM_SealFinal进行释放,该结构定义了PEM中要使用的编码算法、信息摘要算法以及加密算法。 typedef struct PEM_Encode_Seal_st { EVP_ENCODE_CTX encode; EVP_MD_CTX md; EVP_CIPHER_CTX cipher; } PEM_ENCODE_SEAL_CTX; 下面定义了PEM_CTX中的一个子结构,用来保存用户的信息 typedef struct pem_recip_st { char *name; X509_NAME *dn; int cipher; int key_enc; } PEM_USER; 下面是PEM主结构体PEM_CTX结构的定义,我们将在注释里面对必要的参数进行说明。 typedef struct pem_ctx_st { int type;//结构类型 struct { int version;//版本号 int mode;//编码方式 } proc_type;//Proc_Type字段信息,包括版本号和编码方式 char *domain; struct { int cipher; } DEK_info;//定义了PEM中DEK_info字段的信息 PEM_USER *originator; int num_recipient; PEM_USER **recipient; #ifndef OPENSSL_NO_STACK STACK *x509_chain;//保存证书链 #else char *x509_chain; //保存证书链 #endif EVP_MD *md; //签名算法类型,指定了信息摘要算法和签名算法 int md_enc; //信息摘要算法是否进行了加密(签名) int md_len; //摘要信息的长度 char *md_data; //摘要信息,可以是经过了加密(签名)的信息 EVP_CIPHER *dec;//数据加密算法 int key_len; //密钥长度 unsigned char *key; //加密密钥 int data_enc; //数据是否加密标志 int data_len; //数据长度 unsigned char *data; //数据 } PEM_CTX; 下面我们对PEM_CTX结构体中一些重要的参数做详细的说明

2.1 int type参数 该参数指明了PEM_CTX结构的类型,目前包括了以下定义的类型: #define PEM_OBJ_UNDEF 0 #define PEM_OBJ_X509 1 #define PEM_OBJ_X509_REQ 2 #define PEM_OBJ_CRL 3 #define PEM_OBJ_SSL_SESSION 4 #define PEM_OBJ_PRIV_KEY 10 #define PEM_OBJ_PRIV_RSA 11 #define PEM_OBJ_PRIV_DSA 12 #define PEM_OBJ_PRIV_DH 13 #define PEM_OBJ_PUB_RSA 14 #define PEM_OBJ_PUB_DSA 15 #define PEM_OBJ_PUB_DH 16 #define PEM_OBJ_DHPARAMS 17 #define PEM_OBJ_DSAPARAMS 18 #define PEM_OBJ_PRIV_RSA_PUBLIC 19 可以看到,这些类型基本上包括了所有openssl中要使用的基本结构

合集下载

DER、CRT、CER、PEM格式的证书及转换

DER、CRT、CER、PEM格式的证书及转换

DER、CRT、CER、PEM格式的证书及转换⼀、证书和编码X.509证书,其核⼼是根据RFC 5280编码或数字签名的数字⽂档。

实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL ⽂件,即如RFC 5280(通常称为PKIX for Public Key Infrastructure(X.509))中规定的。

⼆、X509⽂件扩展我们⾸先要了解的是每种类型的⽂件扩展名。

很多⼈不清楚DER,PEM,CRT和CER结尾的⽂件是什么,更有甚者错误地说是可以互换的。

在某些情况下,某些可以互换,最佳做法是识别证书的编码⽅式,然后正确标记。

正确标签的证书将更容易操纵三、编码--决定扩展名⽅式1).DER 扩展名.DER = DER扩展⽤于⼆进制DER编码证书。

这些⽂件也可能承载CER或CRT扩展。

正确的说法是“我有⼀个DER编码的证书”不是“我有⼀个DER证书”。

2).PEM 扩展名.PEM = PEM扩展⽤于不同类型的X.509v3⽂件,是以“ - BEGIN ...”前缀的ASCII(Base64)数据。

3)常见的扩展3.1).CRT 扩展名.CRT = CRT扩展⽤于证书。

证书可以被编码为⼆进制DER或ASCII PEM。

CER和CRT扩展⼏乎是同义词。

最常见的于Unix 或类Unix系统。

3.2).CER扩展名CER = .crt的替代形式(Microsoft Convention)您可以在微软系统环境下将.crt转换为.cer(.both DER编码的.cer,或base64 [PEM]编码的.cer)。

.cer⽂件扩展名也被IE识别为⼀个运⾏MS cryptoAPI命令的命令(特别是rundll32.execryptext.dll,CryptExtOpenCER),该命令显⽰⽤于导⼊和/或查看证书内容的对话框。

3.3).KEY 扩展名.KEY = KEY扩展名⽤于公钥和私钥PKCS#8。

OpenSSL命令---s_client

OpenSSL命令---s_client

OpenSSL命令---s_client/as3luyuan123/article/details/16812071⽤途:s_client为⼀个SSL/TLS客户端程序,与s_server对应,它不仅能与s_server进⾏通信,也能与任何使⽤ssl协议的其他服务程序进⾏通信。

⽤法:[cpp]1. openssl s_client [-host host] [-port port] [-connect host:port] [-verify depth] [-cert filename]2. [-certform DER|PEM] [-key filename] [-keyform DER|PEM] [-pass arg] [-CApath directory] [-CAfile filename]3. [-reconnect][-pause] [-showcerts] [-debug] [-msg] [-state] [-nbio_test] [-nbio][-crlf] [-ign_eof] [-no_ign_eof]4. [-quiet] [-ssl2] [-ssl3] [-tls1_1] [-tls1_2] [-tls1] [-dtls1] [-no_ssl2][-no_ssl3] [-no_tls1] [-no_tls1_1]5. [-no_tls1_2] [-bugs] [-cipher cipherlist] [-starttls protocol] [-engine id] [-tlsextdebug] [-no_ticket]6. [-sess_out filename] [-sess_in filename] [-rand file(s)]选项说明:-host host:设置服务地址。

-port port:设置服务端⼝,默认为4433。

-connect host:port:设置服务器地址和端⼝号。

【微信支付】证书文件使用说明

【微信支付】证书文件使用说明

HTTPS双向认证使用说明现在邮件发出的文件有四个,分别是apiclient_cert.p12、apiclient_cert.pem、apiclient_key.pem、rootca.pem。

apiclient_cert.p12包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份,请妥善保管不要泄漏和被他人复制部分安全性要求较高的API需要使用该证书来确认您的调用身份windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000)apiclient_cert.pem从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供;您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pemapiclient_key.pem从apiclient_cert.p12中导出密钥部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供;您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pemrootca.pem微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性,该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用https双向认证上述文件使用说明:问:什么是双向认证?答:双向认真顾名思义,就是指服务器与客户端进行通信的时候,两者相互进行签名校验,以确保双方身份,映射到上述四个文件,既服务器验证客户端的时候通过客户端证书和签名(既:apiclient_cert.p12 或者apiclient_cert.pem和apiclient_key.pem),客户端验证服务器通过ca的根证书进行(rootca.pem),根证书有些操作系统上或者开发环境中已经包含,此时不需要导入,但如果找不到跟证书时则需要使用rootca.pem。

openssl 用法

openssl 用法

openssl 用法1. 简介OpenSSL是一个开源的加密库,它提供了一套丰富的加密算法和工具,可以用于安全通信、数字证书、密码学等领域。

本文将详细介绍OpenSSL的用法,包括生成证书、对称加密、非对称加密以及数字签名等方面。

2. 生成证书2.1 创建自签名证书使用OpenSSL可以创建自签名证书,自签名证书是一种不依赖于第三方机构签发的信任证书。

生成自签名证书的步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.使用私钥签名证书请求:openssl x509 -req -in csr.csr -signkeyprivate.key -out certificate.crt2.2 使用CA签发证书除了自签名证书,还可以向证书颁发机构(CA)申请证书。

步骤如下:1.生成私钥:openssl genrsa -out private.key 20482.生成证书签名请求:openssl req -new -key private.key -out csr.csr3.将证书签名请求发送给CA机构进行签发4.收到由CA签发的证书后,使用私钥对其进行验证:openssl x509 -req -incsr.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out certificate.crt3. 对称加密对称加密是一种加密算法,使用相同的密钥进行加密和解密。

OpenSSL支持多种对称加密算法,包括DES、AES等。

3.1 对称加密示例以下是使用AES对称加密算法进行加密和解密的示例:# 生成密钥openssl rand -out key.key 16# 加密文件openssl enc -aes-256-cbc -e -in plaintext.txt -out ciphertext.enc -pass file:. /key.key# 解密文件openssl enc -aes-256-cbc -d -in ciphertext.enc -out plaintext.txt -pass file:. /key.key4. 非对称加密与对称加密不同,非对称加密使用一对公钥和私钥进行加密和解密。

nginx 证书格式

nginx 证书格式

Nginx 证书格式介绍在使用 Nginx 作为 Web 服务器时,我们经常需要配置 SSL/TLS 证书来实现加密通信。

本文将介绍 Nginx 所支持的证书格式,包括 PEM、DER 和 PFX。

PEM 格式PEM(Privacy-Enhanced Mail)是一种常见的证书格式,基于 Base64 编码的ASCII 文本。

PEM 格式可以包含多种类型的加密对象,如证书、私钥和证书链。

证书文件的扩展名•.pem:这是常见的证书文件扩展名,可用于包含单个证书或证书链。

•.crt:通常用于包含单个证书。

示例 PEM 格式证书文件:-----BEGIN CERTIFICATE-----MIICzDCCAbSgAwIBAgIUBe+LL8wUoqWYQ.....-----END CERTIFICATE-----示例 PEM 格式私钥文件:-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwgg....-----END PRIVATE KEY-----DER 格式DER(Distinguished Encoding Rules)也是一种常见的证书格式,不同于 PEM格式的 ASCII 文本,DER 格式以二进制形式存储。

DER 格式通常用于在各种系统和设备之间的证书交换。

证书文件的扩展名•.der:通常用于包含单个证书。

示例 DER 格式证书文件:无法直接展示 DER 格式的证书文件,因为它是以二进制形式存储的。

PFX 格式PFX(PKCS#12)是一种用于存储和传输私密密钥、证书和证书链的格式。

PFX 格式将所有信息包装成一个文件,通常用于在 Windows 上进行证书和密钥的导入和导出。

证书文件的扩展名•.pfx:用于包含私钥、证书和证书链的 PFX 格式文件。

示例 PFX 格式证书文件:无法展示 PFX 格式的证书文件,因为它是加密的。

证书解析实例

证书解析实例

证书解析实例1. SSL证书解析实例:假设有一个网站,它使用了SSL证书来进行数据加密和身份验证。

以下是一个解析该网站的SSL证书的实例:- 使用openssl命令行工具来解析SSL证书。

- 执行以下命令:openssl x509 -in certificate.crt -text这将打印出证书的详细信息,包括证书的颁发机构、有效期、公钥等。

- 将证书的PEM编码内容保存为certificate.crt文件,并将其保存在本地计算机上的任意位置。

- 执行命令openssl x509 -noout -dates -in certificate.crt这将打印出证书的有效期信息。

- 执行命令openssl x509 -noout -issuer -in certificate.crt这将打印出证书的颁发机构信息。

- 执行命令openssl x509 -noout -subject -in certificate.crt这将打印出证书的拥有者(主体)信息。

2. 数字签名证书解析实例:假设有一个文件,它使用了数字签名证书来进行身份验证和数据完整性验证。

以下是一个解析该数字签名证书的实例:- 使用openssl命令行工具来解析数字签名证书。

- 执行以下命令:openssl pkcs12 -info -in certificate.pfx这将要求您输入密码,以解密证书文件。

- 输入密码后,将会打印出证书的详细信息,包括证书的颁发机构、有效期、公钥等。

- 将证书的PEM编码内容保存为certificate.crt文件,并将其保存在本地计算机上的任意位置。

- 执行命令openssl x509 -noout -dates -in certificate.crt这将打印出证书的有效期信息。

- 执行命令openssl x509 -noout -issuer -in certificate.crt这将打印出证书的颁发机构信息。

pem格式的公钥

PEM格式的公钥什么是PEM格式的公钥?PEM(Privacy-Enhanced Mail)格式的公钥是一种基于文本的文件格式,用于存储和传输公钥信息。

PEM格式的公钥通常用于数字证书、加密和认证等领域。

PEM格式的公钥采用Base64编码,以ASCII文本的形式存储。

它以”—–BEGIN PUBLIC KEY—–“开头,以”—–END PUBLIC KEY—–“结尾,并包含了公钥的相关信息。

PEM格式的公钥文件可以包含单个公钥,也可以包含多个公钥。

多个公钥可以通过在文件中使用”—–BEGIN PUBLIC KEY—–“和”—–END PUBLIC KEY—–“进行分隔。

PEM格式的公钥的结构PEM格式的公钥文件由以下几个部分组成:1.标题行(Header Line):以”—–BEGIN PUBLIC KEY—–“开头,表示该文件是一个PEM格式的公钥文件。

2.公钥数据(Public Key Data):Base64编码的公钥数据,即实际的公钥信息。

公钥数据可以包含多行。

3.结尾行(Footer Line):以”—–END PUBLIC KEY—–“结尾,表示该PEM格式的公钥文件的结束。

以下是一个PEM格式的公钥文件的示例:-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1u6WJ3lWU2CkYJ9T7V1mf9pM3t9zN8TgI6F3X5K8iUaG9dJ9Z4r+T8D3Sg3+6XW2+D7M9RqYx9NlN1rT2M2SJg1BpI7g9BjS8Jq4lJYcjH9+U3FvEz3a9L9A6y+JdXb7V7D7KZl2vzv2zXt0yJ9lD2Dn9ZzYHd5+Xj+0Ljv4ZqL6t8j6Cg8z7a9n0Z9tL3w9R3L2C5b5w1Y5N5Q1j4L9P8n5l8G4S8V9D2Q9H7U1L5P3V6Y2K9T4W2P9D3K3P9W3C3A6C5L9N2P5J2H4Q5L3J3J1I9P5T9P9C2L5S9V3R8U9P3B8S7B3Y5U2T9S8K3K7A4A6W3T5I9H8V5R3I8K6X3J6J8J7I2V8Y4R3O6K2H9K5C4C6M3O5B8K8M9U7J3L9N9Y7V6B9V4R9A2D7C3C4G7U7P2S4O2G6Y4U6R4D4M8L3Y9P4P7O4A5V2U7W3B6R2S3O7S3J8H8R9H6E4C4G7H3C9P9J8Y8H8N6G6F4R6I5O9L7L3Y2N2U4U4N9A7M6Y2K7N9C8L2J7B6R4W4O7P6P-----END PUBLIC KEY-----PEM格式的公钥的应用PEM格式的公钥广泛应用于许多领域,包括:数字证书PEM格式的公钥常用于存储和传输数字证书中的公钥信息。

openssl,CA证书生成命令集合

多级证书平时我们自己签发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即可。

linux 创建证书

linux 创建证书要在Linux上创建证书,通常可以使用OpenSSL工具。

以下是创建证书的基本步骤:1. 生成私钥:首先,使用OpenSSL生成一个私钥文件。

你可以选择RSA、ECDSA 或Ed25519等算法来生成私钥。

以下是一个生成RSA私钥的示例命令:```shellopenssl genrsa -out private_key.pem 2048```这将生成一个名为`private_key.pem`的私钥文件,使用2048位RSA算法。

2. 创建证书签名请求(CSR):使用私钥文件创建一个证书签名请求(CSR)。

以下是一个示例命令:```shellopenssl req -new -key private_key.pem -out certificate_request.csr```这将打开一个交互式界面,要求你输入一些信息,如国家、组织、常用名等。

输入所需信息后,将生成一个名为`certificate_request.csr`的CSR文件。

3. 获取证书签名:将CSR文件提交给证书颁发机构(CA)或自签名以获取证书签名。

如果你使用自签名,可以使用以下命令自己签名:```shellopenssl x509 -req -in certificate_request.csr -signkey private_key.pem -out certificate.pem```这将使用私钥文件对CSR文件进行签名,生成一个名为`certificate.pem`的证书文件。

4. 验证证书:为了验证证书的有效性,你可以使用以下命令:```shellopenssl verify -CAfile certificate.pem certificate.pem```如果证书有效,将显示“OK”。

以上是在Linux上创建证书的基本步骤。

请注意,这只是一种简单的方法,实际创建证书的过程可能更加复杂,具体取决于你的需求和所使用的证书类型。

RSA算法---公钥密钥对生成方法

RSA算法---公钥密钥对⽣成⽅法前⾔:PEM是OpenSSL和许多其他SSL⼯具的标准格式,OpenSSL 使⽤PEM ⽂件格式存储证书和密钥。

这种格式被设计⽤来安全的包含在ascii 甚⾄富⽂本⽂档中,如电⼦邮件。

这意味着您可以简单的复制和粘贴pem⽂件的内容到另⼀个⽂档中。

PEM⽂件是Base64编码的证书。

PEM证书通常⽤于web服务器,因为他们可以通过⼀个简单的⽂本编辑器,很容易地转换成可读的数据。

通常当⼀个PEM编码在⽂本编辑器中打开⽂件,它会包含不同的页眉和页脚。

-----BEGIN CERTIFICATE REQUEST----- and -----END CERTIFICATEREQUEST-----CSR(证书签名请求)-----BEGIN RSA PRIVATE KEY----- and -----END RSA PRIVATEKEY-----私钥-----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----证书⽂件PKCS #8: Private-Key Information Syntax(语法) Standard(标准)OpenSSL:是⼀个强⼤的安全套接字层密码库,囊括主要的密码算法、常⽤的密钥和证书封装管理功能及SSL协议,并提供丰富的应⽤程序供测试或其它⽬的使⽤。

OpenSSL整个软件包⼤概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应⽤程序。

OpenSSL的⽬录结构⾃然也是围绕这三个功能部分进⾏规划的。

⼀、OpenSSL⽣成pem格式公私钥1、⽣成RSA私钥openssl genrsa -out rsa_private_key.pem 1024该命令会⽣成1024位的私钥,运⾏,如下图:⽣成私钥⽂件rsa_private_key.pem,内容如下:⽤记事本⽅式打开它,可以看到-----BEGIN RSA PRIVATE KEY-----开头,-----END RSA PRIVATE KEY-----结尾的字符串,这个就是原始的私钥。

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