openssl生成SSL证书的流程

SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。

SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“https://www.baidu.com”。

什么是x509证书链

x509证书一般会用到三类文件,key,csr,crt。

Key是私用密钥,openssl格式,通常是rsa算法。

csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。

crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证。

概念

首先要有一个CA根证书,然后用CA根证书来签发用户证书。

用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的CA根证书来签发证书。

特别说明:

(1)自签名证书(一般用于顶级证书、根证书): 证书的名称和认证机构的名称相同.

(2)根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。

数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。数字证书包含证书中所标识的实体的公钥(就是说你的证书里有你的公钥),由于证书将公钥与特定的个人匹配,并且该证书的真实性由颁发机构保证(就是说可以让大家相信你的证书是真的),因此,数字证书为如何找到用户的公钥并知道它是否有效这一问题提供了解决方案。

openssl中有如下后缀名的文件

.key格式:私有的密钥

.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写

.crt格式:证书文件,certificate的缩写

.crl格式:证书吊销列表,Certificate Revocation List的缩写

.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

CA根证书的生成步骤

生成CA私钥(.key)-->生成CA证书请求(.csr)-->自签名得到根证书(.crt)(CA给自已颁发的证书)。

[plain] view plain copy

  1. # Generate CA private key
  2. openssl genrsa -out ca.key 2048
  3. # Generate CSR
  4. openssl req -new -key ca.key -out ca.csr
  5. # Generate Self Signed certificate(CA 根证书)
  6. openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

在实际的软件开发工作中,往往服务器就采用这种自签名的方式,因为毕竟找第三方签名机构是要给钱的,也是需要花时间的。

用户证书的生成步骤

生成私钥(.key)-->生成证书请求(.csr)-->用CA根证书签名得到证书(.crt)

服务器端用户证书:

[html] view plain copy

  1. # private key
  2. $openssl genrsa -des3 -out server.key 1024
  3. # generate csr
  4. $openssl req -new -key server.key -out server.csr
  5. # generate certificate
  6. $openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

客户端用户证书:

[plain] view plain copy

  1. $openssl genrsa -des3 -out client.key 1024
  2. $openssl req -new -key client.key -out client.csr
  3. $openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

生成pem格式证书:

有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成

$cat client.crt client.key> client.pem

$cat server.crt server.key > server.pem

结果:

服务端证书:ca.crt, server.key, server.crt, server.pem

客户端证书:ca.crt, client.key, client.crt, client.pem

注意:

在执行$openssl
ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key时可能会出错:

Using
configuration from /usr/share/ssl/openssl.cfg I am unable to access the
./demoCA/newcerts directory ./demoCA/newcerts: No such file or
directory

解决方法:

1)mkdir -p ./demoCA/newcerts

2)touch demoCA/index.txt

3)touch demoCA/serial

4)echo 01 > demoCA/serial

时间: 2024-12-25 15:02:04

openssl生成SSL证书的流程的相关文章

openssl生成SSL证书的流程 - moonhillcity的博客 - CSDN博客

1.安装openssl 之后在/usr/lib/ssl目录下(ubuntu系统,用whereis查下ssl目录即可)下找到openssl.cnf,拷贝到工作目录下. 2.工作目录下新建demoCA文件夹,文件夹中新建文件index.txt和serial,再创建一个newcerts的文件夹.在serial里面添加字符01. mkdir demoCA cd demoCA touch ./{serial, index.txt} vi serial 添加01 :wq 生成证书过程:(注意以下过程都在工作

OpenSSl生成SSL证书(支持https)

一:环境与安装说明 WIN7_64,Nginx服务器,OpenSSL_Win64.本人使用phpStudy集成开发环境,使用Nginx+PHP,支持浏览器https请求. nginx下载地址:http://nginx.org/en/download.html      openssl下载地址:http://slproweb.com/products/Win32OpenSSL.html      官网地址:https://www.openssl.org/source/ 二:安装OpenSSL及配置

openssl生成ssl证书

x509证书一般会用到三类文,key,csr,crt. Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥. crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证. 1.key的生成 openssl genrsa -des3 -out server.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度

WIN64使用OPENSSL生成SSL证书

下载OPENSSL http://slproweb.com/products/Win32OpenSSL.html 生成服务器端的私钥(key文件):openssl genrsa -des3 -out root.key 1024输入密码123456 请求建立证书的申请文件root.csr:openssl req -new -key root.key -out root.csr -config openssl.cfg 创立一个为期10年的根证书root.crtopenssl x509 -req -d

使用openssl生成SSL完全参考手册

openssl是一个开放源代码的SSL实现.基于openssl指令的最简单和最主要应用就是使用req.CA和X509来签发一个证书. openssl提供了命令行选项和交互式两种方式来执行各种操作. 在命令行中直接输入openssl可进入交互shell,如下: [[email protected] local]# openssl OpenSSL> help openssl:Error: 'help' is an invalid command. Standard commands asn1pars

使用keytool生成ssl证书

在项目中由于要使用https访问项目,然后了解到jdk有一个自带的工具keytool可以用来生成ssl证书,从而可以通过https进行访问. 使用keytool生成ssl证书的流程如下: 具体实现可以参考博文:http://blog.csdn.net/zmken497300/article/details/53186730

openssl校验SSL证书public是否配对

今天遇到一个很少遇到的关于SSL证书申请.安装问题,简要记录下来. 背景:SSL证书是private key + public key一起工作才能完成加密过程的. 大致来说就是client在handshake过程中先拿public key加密发送随机session encryption key set以及其它关键信息,通过public key密码的报文只能通过server端安装的SSL certificate key pair中的private key才能进行解密. 如果private key与

openssl生成https证书、转换证书格式的各种相关操作

第一步:生成 private key.csr等文件 我们可能需要输入以下信息(交互式): --- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:Brooklyn Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Bro

用XCA(X Certificate and key management)可视化程序管理SSL 证书(2)--生成SSL证书请求

在上个章节中,我们提到了如何安装XCA(X Certificate and key management)程序,这个章节我们开始正式介绍如何用XCA生成证书请求.如果大家用过java的话,肯定知道jdk默认提供了一个工具叫做:keytool,这个工具我们能够从java的安装目录下找到,比如我本机就在:C:\Program Files (x86)\Java\jre7\bin: 但是这个工具因为使用的是命令行,不是特别的直观,所以我在本章节给大家演示一下如何用XCA来生成证书请求.具体步骤如下: 步