OpenSSL证书制作过程
Openssl生成证书步骤说明
Openssl生成证书步骤说明命令操作:1、生成普通私钥:2、生成带加密口令的密钥:在生成带加密口令的密钥时需要自己去输入密码。
对于为密钥加密现在提供了一下几种算通过生成的私钥去生成证书:在生成证书的时候需要按照提示输入一些个人信息。
通过私钥生成公钥:格式转换:(证书、私钥、公钥)(PEM <----->DER)从DER格式转换成PEM格式一样,就是把inform的格式改成DERoutform的格式改成PEM 即可。
服务器和客户端认证的证书生成下面是一个服务器和客户端认证的证书、私钥生成方法:(server.crt、client.crt、ca.crt)用默认openssl配置文件生成证书,先创建文件夹创建文件夹demoCA/newcerts:mkdir -p demoCA/newcerts创建个空文件index.txt:touch demoCA/index.txt向文件serial中写入01:echo 01 > demoCA/serial1.首先要生成服务器端的私钥(key 文件):openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key 文件(参数des3 便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl 提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!去除key 文件口令的命令:openssl rsa -in server.key -out server.key2.openssl req -new -key server.key -out server.csr生成Certificate Signing Request(CSR),生成的csr 文件交给CA 签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.3.对客户端也作同样的命令生成key 及csr 文件:openssl genrsa -des3 -out client.key 1024openssl req -new -key client.key -out client.csr4.CSR 文件必须有CA 的签名才可形成证书.可将此文件发送到verisign 等地方由它验证,要交一大笔钱,何不自己做CA 呢.openssl req -new -x509 -keyout ca.key -out ca.crt5.用生成的CA 的证书为刚才生成的server.csr,client.csr 文件签名:openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.keyopenssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key现在我们所需的全部文件便生成了.另:client 使用的文件有:ca.crt,client.crt,client.keyserver 使用的文件有:ca.crt,server.crt,server.key.crt 文件和.key 可以合到一个文件里面,本人把2 个文件合成了一个.pem 文件(直接拷贝过去就行了)。
Linux下利用openssl 生成SSL证书步骤
Linux下利用openssl 生成SSL证书步骤1、概念首先要有一个CA根证书,然后用CA根证书来签发用户证书。
用户进行证书申请:一般先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的CA根证书来签发证书。
2、后缀详解.key格式:私有的密钥.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request 的缩写.crt格式:证书文件,certificate的缩写.crl格式:证书吊销列表,Certificate Revocation List的缩写.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式3、添加 index.txt 和 serial 文件cd /etc/pki/CA/touch /etc/pki/CA/index.txttouch /etc/pki/CA/serialecho 01 > /etc/pki/CA/serial4、CA根证书的生成4.1 生成CA私钥(.key)openssl genrsa -out ca.key 2048[root@CA]# openssl genrsa -out ca.key 2048Generating RSA private key, 2048 bit long modulus.............+++.....+++e is 65537 (0x10001)4.2 生成CA证书请求(.csr)openssl req -new -key ca.key -out ca.csr[root@CA]# openssl req -new -key ca.key -out ca.csrYou 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) [XX]:USState or Province Name (full name) []:ORLocality Name (eg, city) [Default City]:OROrganization Name (eg, company) [Default Company Ltd]:LXOROrganizational Unit Name (eg, section) []:LXORAQCommon Name (eg, your name or your server's hostname) []:Email Address []:eg@Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:demon2234An optional company name []:OR4.3 自签名得到根证书(.crt)(CA给自已颁发的证书)openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt[root@CA]# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt Signature oksubject=/C=US/ST=OR/L=OR/O=LXOR/OU=LXORAQ/CN=/emailAddress=eg@ Getting Private key5、用户证书的生成5.1 生成私钥(.key)openssl genrsa -des3 -out server.key 1024[root@CA]# openssl genrsa -des3 -out server.key 1024Generating RSA private key, 1024 bit long modulus........++++++...................++++++e is 65537 (0x10001)Enter pass phrase for server.key:Verifying - Enter pass phrase for server.key:5.2 生成证书请求(.csr)openssl req -new -key server.key -out server.csr[root@CA]# openssl req -new -key server.key -out server.csrEnter pass phrase for server.key: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) [XX]:USState or Province Name (full name) []:ORLocality Name (eg, city) [Default City]:OROrganization Name (eg, company) [Default Company Ltd]:LXOROrganizational Unit Name (eg, section) []:LXORAQCommon Name (eg, your name or your server's hostname) []:Email Address []:eg@Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:demon2234An optional company name []:OR5.3 用CA根证书签名得到证书(.crt)o penssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key[root@CA]# openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key Using configuration from /etc/pki/tls/fCheck that the request matches the signatureSignature okCertificate Details:Serial Number: 3 (0x3)ValidityNot Before: Mar 13 07:01:44 2018 GMTNot After : Mar 13 07:01:44 2019 GMTSubject:countryName = USstateOrProvinceName = ORorganizationName = LXORorganizationalUnitName = LXORAQcommonName = emailAddress = eg@X509v3 extensions:X509v3 Basic Constraints:CA:FALSENetscape Comment:OpenSSL Generated CertificateX509v3 Subject Key Identifier:11:62:12:26:6C:1C:56:CD:9D:B2:6A:65:06:24:57:27:3E:5C:BC:EAX509v3 Authority Key Identifier:DirName:/C=US/ST=OR/L=OR/O=LXOR/OU=LXORAQ/CN=/emailAddress=eg@ serial:C9:6E:10:F7:A5:40:8F:1DCertificate is to be certified until Mar 13 07:01:44 2019 GMT (365 days)Sign the certificate? [y/n]:yfailed to update database//错误提示,解决方法将/etc/pki/CA目录下的index.txt文件删除,重TXT_DB error number 2新创建一个index.txt文件。
使用OpenSSL建立根CA及自签名证书制作过程
使用OpenSSL建立根CA及自签名证书制作过程2009-12-24 11:35:32| 分类:openssl |字号订阅Openssl版本:0.9.8 版本,可从处下载。
1.先建立如下目录结构:$home/testca # testca 是待建CA的主目录├─newcerts/ # newcerts子目录将存放CA签发过的数组证书(备份目录)├─private/ # private目录用来存放CA私钥└─conf/ # conf目录用来存放简化openssl命令行参数用的配置文件此外使用命令echo "01" > serialtouch index.txt在ca根目录下创建文件serial (用来存放下一个证书的序列号) 和indext.txt (证书信息数据库文件)。
1.生成CA的私钥和自签名证书 (根证书)创建配置文件:vi "$HOME/testca/conf/gentestca.conf"文件内容如下:####################################[ req ]default_keyfile = /home/cx/testCA/private/cakey.pemdefault_md = md5prompt = nodistinguished_name = ca_distinguished_namex509_extensions = ca_extensions[ ca_distinguished_name ]organizationName = ssorganizationalUnitName = sstccommonName = sstcCAemailAddress = GChen2@ #自己的邮件地址[ ca_extensions ]basicConstraints = CA:true########################################然后执行命令如下:cd "$HOME/testca"openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 2190 -config "$HOME/testca/conf/gentestca.conf"执行过程中需要输入CA私钥的保护密码,假设我们输入密码: 888888可以用如下命令查看一下CA自己证书的内容openssl x509 -in cacert.pem -text –noout创建一个配置文件,以便后续CA日常操作中使用vi "$HOME/testca/conf/testca.conf"文件内容如下:########################################[ ca ]default_ca = testca # The default ca section[ testca ]dir = /home/cx/testCA # top dirdatabase = $dir/index.txt # index file.new_certs_dir = $dir/newcerts # new certs dircertificate = $dir/cacert.pem # The CA certserial = $dir/serial # serial no fileprivate_key = $dir/private/cakey.pem # CA private keyRANDFILE = $dir/private/.rand # random number filedefault_days = 365 # how long to certify fordefault_crl_days= 30 # how long before next CRLdefault_md = md5 # message digest method to useunique_subject = no # Set to 'no' to allow creation of# several ctificates with same subject.Policy = policy_any # default policy[ policy_any ]countryName = optionalstateOrProvinceName = optionallocalityName = optionalorganizationName = optionalorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional########################################1.自己生成公钥密钥,并用测试CA签发数字证书我们在平时测试时,可以自己用openssl为服务器或用户生成公钥密钥,并用上面创建的CA签发对应私钥(密钥)的数字证书。
用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文件(直接拷贝过去就行了)。
openssl做证书的方法 -回复
openssl做证书的方法-回复OpenSSL 是一个开源的软件包,可用于创建安全套接字层(SSL)和传输层安全性(TLS)协议的证书。
证书是用于身份验证和数据加密的数字文件。
下面将一步一步介绍OpenSSL 的使用方法来生成证书。
第一步:安装OpenSSL首先,您需要安装OpenSSL 软件包。
根据您的操作系统,可以在OpenSSL 官方网站(OpenSSL 在您的系统上可用。
第二步:生成私钥要生成证书,首先需要生成一个私钥。
私钥用于生成和验证证书,因此它必须严格保密。
您可以使用以下命令在命令行中生成私钥:openssl genpkey -algorithm RSA -out private.key此命令将使用RSA 算法生成一个私钥,并将其保存在private.key 文件中。
确保将文件保存在安全的位置,并为其设置适当的权限,以防止未经授权访问。
第三步:生成证书请求生成了私钥后,接下来需要生成证书请求。
证书请求包含您的公钥以及有关您身份的信息。
以下命令将生成证书请求:openssl req -new -key private.key -out certificate.csr在此命令中,-key 参数指定您的私钥文件,-out 参数指定将保存证书请求的文件名。
您将被要求输入与您身份相关的信息,如名称、单位、电子邮件地址等。
确保在输入这些信息时提供准确的数据。
第四步:自签名证书生成证书请求后,您可以使用OpenSSL 生成一个自签名证书。
自签名证书是由您自己颁发的,因此在一些特定情况下可能不被所有设备或应用程序接受。
但它在测试和开发环境中非常有用。
以下命令将生成自签名证书:openssl x509 -req -in certificate.csr -signkey private.key -out certificate.crt此命令使用您之前生成的私钥和证书请求来创建一个自签名证书。
最后的证书将保存在certificate.crt 文件中。
openssl制作证书流程
openssl制作证书流程OpenSSL是一个开源的加密工具包,可用于生成和管理数字证书。
下面是制作证书的基本流程:1. 安装OpenSSL:首先,确保计算机上已安装OpenSSL。
你可以从OpenSSL官方网站下载适合你操作系统的安装程序,并按照指示进行安装。
2. 创建私钥:使用以下命令在命令行中创建一个私钥文件:openssl genrsa -out private.key 2048这将生成一个2048位的RSA私钥,并将其保存在名为private.key的文件中。
私钥是保护证书的关键。
3. 生成证书请求(CSR):接下来,使用以下命令生成证书请求文件(CSR):openssl req -new -key private.key -out certificate.csr在执行此命令时,你需要提供一些相关的信息,如国家、组织名称等。
这些信息将包含在生成的CSR文件中。
4. 填写证书请求信息:执行上一步命令后,将会出现一系列问题,你需要根据实际情况回答。
其中最重要的是Common Name(通用名称),这是证书的域名。
请记住,如果你计划用于公共网站,确保输入的域名与你的网站域名完全匹配。
5. 签发证书:CSR文件是你向证书颁发机构(CA)申请证书的请求文件。
你需要将此文件上载到CA的网站或发送给CA。
该CA将根据你的请求和必要的身份验证程序签署并颁发证书。
6. 安装证书:一旦你收到证书文件,你可以通过以下命令将其与私钥文件合并:openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca.crt这将创建一个.pfx文件,其中包含你的私钥、证书和根CA证书。
通过以上步骤,你可以使用OpenSSL成功地制作证书。
请记住,在实际生产环境中,你可能需要购买商业证书,以确保其安全性和认可度。
openssl 证书流程 -回复
openssl 证书流程-回复OpenSSL是一个开放源代码的软件库,可以用于安全地建立和管理加密连接。
它提供了各种密码学功能,包括加密、解密、数字签名和认证等。
在网络安全领域,数字证书被广泛使用来验证服务器的身份和提供安全的通信。
本文将介绍OpenSSL的证书流程,涵盖生成证书请求、签署证书、验证证书以及使用证书等步骤。
一、生成证书请求(CSR)生成证书请求是证书颁发机构(CA)验证申请者身份的第一步。
以下是生成证书请求的步骤:1. 设置OpenSSL配置文件:OpenSSL使用配置文件来定义证书生成的各种选项。
我们可以通过编辑默认配置文件opensslf,或者创建自定义配置文件。
在配置文件中,我们可以设置一些必要的信息,例如国家、组织、通用名称(域名)等。
2. 生成私钥:生成证书请求需要一个RSA私钥对。
我们可以使用OpenSSL生成一个RSA私钥文件。
命令格式如下:openssl genrsa -out private.key 2048这将生成一个2048位的RSA私钥文件private.key。
3. 创建证书请求:接下来,我们可以使用私钥创建一个证书请求文件。
命令格式如下:openssl req -new -key private.key -out request.csr该命令将基于私钥生成一个新的证书请求文件request.csr。
二、签署证书证书签署是由CA执行的过程,用于验证证书请求者的身份并签署证书。
以下是签署证书的步骤:1. 配置CA证书在签署证书之前,我们需要设置CA证书文件,并创建一个签署配置文件。
这个配置文件定义了签署证书的选项,例如证书有效期、密钥长度等。
2. 生成CA私钥和自签名证书作为CA,我们首先需要生成自己的私钥和自签名证书。
命令格式如下:openssl req -new -x509 -keyout ca.key -out ca.crt -config caf这个命令将创建一个私钥文件ca.key和一个自签名的证书文件ca.crt。
openssl证书生成流程
openssl证书生成流程
生成OpenSSL证书的过程通常包括以下几个步骤:
1. 生成密钥对:使用OpenSSL命令行工具生成一个私钥和公钥对。
这个私钥将用于创建证书,公钥则与证书一起使用,以验证该证书是由正确的私钥签名的。
```bash
openssl genrsa -out private_ 2048
```
2. 创建证书请求:使用私钥创建一个证书请求(也称为CSR,即证书签名请求)。
这个请求将被发送给证书颁发机构(CA)或其他可信第三方进行签名。
```bash
openssl req -new -key private_ -out certificate_
```
3. 提交证书请求:将生成的CSR文件提交给CA进行签名。
CA将使用其私钥对CSR进行签名,生成一个证书。
4. 获取并安装证书:从CA获取已签名的证书,并将其安装到需要进行安全通信的服务器或客户端上。
5. 配置服务器或客户端:在服务器或客户端上配置OpenSSL,以便使用生成的证书和私钥进行安全通信。
这可能涉及将证书和私钥文件复制到适当的目录,并更新SSL配置以指向这些文件。
请注意,以上步骤是一个简化的示例,实际生成和使用OpenSSL证书的过程可能因具体情况而有所不同。
在生产环境中,建议使用受信任的证书颁发机构(CA)颁发的证书,以确保通信的安全性。
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指定用于签证的私钥,运行过程中,要输入私钥的密码和设定书密码。
LINUX使用 OpenSSL 生成证书
使用OpenSSL 生成证书①、生成RSA密钥的方法openssl genrsa -out privkey.pem 2048有的证书要1024 的,所以得:openssl genrsa -out privkey.pem 1024②、生成一个证书请求openssl req -new -key privkey.pem -out cert.csr会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的,比如webmaster@zou.lu 并且能接受邮件!这样就有一个csr 文件了,提交给ssl 提供商的时候就是这个csr 文件(来源:/blog/nginx_ssl_config/)直接cat cert.csr得到一大串字符,比如这样:-----BEGIN CERTIFICATE REQUEST-----MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4kVkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4 FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNypCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1BfRuJnA=-----END CERTIFICATE REQUEST-----提交给你的ssl 提供商即可,一般半个钟头到一天时间就会发给你证书,如图:把所有文件全部上传到一个特定的目录,比如我是上传到/root/zoulu/这里,zoulukey.pem 和zoulucert.csr 是自己在VPS 生成的,剩下的都是证书签发机构颁发的。
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制作证书指导手册制作证书是一项涉及到加密和安全的重要工作,而OpenSSL是一个强大的开源工具,可以用来创建和管理证书。
下面我将从多个角度来介绍如何使用OpenSSL制作证书。
首先,你需要安装OpenSSL工具包。
你可以从OpenSSL官方网站下载适合你操作系统的安装包,并按照官方指南进行安装。
一旦安装完成,你可以使用以下步骤来制作证书:1. 生成私钥:首先,你需要生成一个私钥文件。
你可以使用以下命令来生成一个2048位的RSA私钥:openssl genpkey -algorithm RSA -out privatekey.pem -pkeyopt rsa_keygen_bits:2048。
2. 生成证书请求:接下来,你需要生成一个证书请求文件(CSR),其中包含了你的公钥和一些基本信息,比如组织名称、单位名称等。
使用以下命令生成CSR:openssl req -new -key privatekey.pem -out csr.pem.3. 自签名证书:如果你只是想要一个自签名的证书(用于开发和测试),你可以使用以下命令生成一个自签名的证书:openssl req -x509 -days 365 -key privatekey.pem -in csr.pem -out certificate.pem.4. 签发证书,如果你需要向一个CA(证书颁发机构)申请证书,你需要将CSR文件发送给CA,并按照他们的指示进行操作。
一般来说,他们会签发一个证书给你,或者提供一个中间证书链。
总的来说,使用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]#至此,公共证书已经创建。
openssl创建ssl证书
openssl创建ssl证书openssl 创建ssl证书博客分类:•信道加密WebServiceTomcatWeblogic浏览器Scheme转自这里前段时间接触webservice,需要建立基于ssl的webservice以保证安全性,并要提供数字的支持。
关于这部分以前没有搞过,经过摸索总算有些收获。
现在把我的一些经验share一下。
一、数字证书的相关准备关于数字证书部分我是用openssl做的,也是个开源的软件,前不久刚刚发布了1.0版本(做了11年才正式发布,由衷的佩服,老外真是有股哏劲)。
网上很多文章介绍用java自带的keytool命令完成,我没有试过,不过看文章介绍好像keytool没有CA认证的功能。
下面开始数字证书相关操作。
1.下载、安装openssl(好像是废话)Openssl建议大家用1.0版本,毕竟是正式版本。
我用的时候正式版还没出来,当时用的是OpenSSL 0.9.8m,不要用OpenSSL 0.9.8h 这个版本(有个bug,会影响到后面的操作)。
安装后从命令行进入安装目录下的bin目录。
Ready! GO!。
2.创建CA的私钥执行以下命令openssl genrsa -des3 -out ../demo/ca/ca.key 1024demo是我的工作目录,接下来会提示你输入密码,后面用到的密码会很多,最好都认真记下来。
3.创建CA证书openssl req -new -x509 -key ../demo/ca/ca.key -out ../demo/ca/ca.crt -days 365x509是一种加密的标准,-out是指输出的文件路径,-key是指定私钥,也就是上一步生成的那个,-days是指证书有效期。
注:再输入common name时你可以指定你自己的名字,但是不能输入你的服务器名()4.创建server端的私钥因为咱们是要在server端提供SSL的webservice,所以在server 端需要使用私钥库和信任库。
使用OpenSSL工具制作X.509证书的方法及其注意事项总结
使用OpenSSL工具制作X.509证书的方法及其注意事项总结如何使用OpenSSL工具生成根证书与应用证书一、步骤简记// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt// 为顶级CA的私钥文件去除保护口令openssl rsa -in CARoot1024.key -out CARoot1024.key// 生成顶级CA的公钥证书和私钥文件,有效期15年(RSA 2048bits,指定)openssl req -newkey rsa:2048 -x509 -days 5480 -keyout CARoot2048.key -out CARoot2048.crt// 为顶级CA的私钥文件去除保护口令openssl rsa -in CARoot2048.key -out CARoot2048.key// 为应用证书/中级证书生成私钥文件openssl genrsa -out app.key 2048// 根据私钥文件,为应用证书/中级证书生成 csr 文件(证书请求文件)openssl req -new -key app.key -out app.csr// 使用CA的公私钥文件给 csr 文件签名,生成应用证书,有效期5年openssl ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything // 使用CA的公私钥文件给 csr 文件签名,生成中级证书,有效期5年openssl ca -extensions v3_ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything以上是生成根证书与应用证书过程中要用到的所有命令,根据生成目标不同,分为三组。
openssl生成密钥证书
openssl⽣成密钥证书⼀、公钥/私钥/签名/验证签名/加密/解密/⾮对称加密 对称加密:⽤同⼀个密码加密/解密⽂件。
⾮对称加密:加密⽤的⼀个密码,解密⽤另外⼀组密码。
加密解密:公钥加密数据,然后私钥解密。
公钥加密的数据只有它相对应的私钥可以解开,所以数据只有到了有私钥的你这⾥,才可以解开成有⽤的数据。
签名和验证签名:私钥加密数据,公钥解密。
⽤私钥对数据进⾏签名,那这个数据就只有配对的公钥可以解开,有这个私钥的只有你,配对的公钥解开了数据,就说明这数据是你发的,这个被称为签名。
⼆、加密的算法: RSA/DSA/SHA/MD5 RSA可以⽤于加/解密,也可以⽤于签名验签。
DSA则只能⽤于签名。
SHA和MD5:摘要算法摘要算法:SHA和MD5:.就是通过⼀种算法,依据数据内容⽣成⼀种固定长度的摘要,这串摘要值与原数据存在对应关系。
实际应⽤过程中,因为需要加密的数据可能会很⼤,进⾏加密费时费⼒,所以⼀般都会把原数据先进⾏摘要,然后对这个摘要值进⾏加密,将原数据的明⽂和加密后的摘要值⼀起传给你.这样你解开加密后的摘要值,再和你得到的数据进⾏的摘要值对应⼀下就可以知道数据有没有被修改了。
实际应⽤中,⼀般都是和对⽅交换公钥,然后你要发给对⽅的数据,⽤他的公钥加密,他得到后⽤他的私钥解密,他要发给你的数据,⽤你的公钥加密,你得到后⽤你的私钥解密,这样最⼤程度保证了安全性.三、公钥: CA/PEM/DER/X509/PKCS四、⽣成证书 1、创建私钥:openssl genrsa -out ca/ca-key.pem 1024 2、创建证书请求:openssl req -new -out ca-req.csr -key ca-key.pem 3、⾃签署证书:openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 3650 4、将证书导出成浏览器⽀持的.p12格式:openssl pkcs12 -export -clcerts -in ca-cert.pem -inkey ca-key.pem -out ca.p12 1// 服务端代码2int Test_openssl_server_v2()3 {4 OM_NetworkInit();56 SSL_CTX *ctx;7 SSL *ssl;8 X509 *client_cert;910char szBuffer[1024];11int nLen;1213struct sockaddr_in addr;14int len;15int nListenFd, nAcceptFd;1617// 初始化18 SSLeay_add_ssl_algorithms();19 OpenSSL_add_all_algorithms();20 SSL_load_error_strings();21 ERR_load_BIO_strings();2223// 我们使⽤SSL V3,V224 EXIT_IF_TRUE((ctx = SSL_CTX_new(SSLv23_method())) == NULL);2526// 要求校验对⽅证书27 SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);2829// 加载CA的证书30 EXIT_IF_TRUE(!SSL_CTX_load_verify_locations(ctx, "cacert.cer", NULL));3132// 加载⾃⼰的证书33 EXIT_IF_TRUE(SSL_CTX_use_certificate_file(ctx, "server.cer", SSL_FILETYPE_PEM) <= 0);3435// 加载⾃⼰的私钥36 EXIT_IF_TRUE(SSL_CTX_use_PrivateKey_file(ctx, "server.key", SSL_FILETYPE_PEM) <= 0); 3738// 判定私钥是否正确39 EXIT_IF_TRUE(!SSL_CTX_check_private_key(ctx));4041// 创建并等待连接42 nListenFd = socket(PF_INET, SOCK_STREAM, 0);43struct sockaddr_in my_addr;44 memset(&my_addr, 0, sizeof(my_addr));45 my_addr.sin_family = PF_INET;46 my_addr.sin_port = htons(8812);47 my_addr.sin_addr.s_addr = inet_addr("127.0.0.1");// INADDR_ANY;48if (bind(nListenFd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {49int a = 2;50int b = a;51 }5253//54 listen(nListenFd, 10);5556 memset(&addr, 0, sizeof(addr));57 len = sizeof(addr);58 nAcceptFd = accept(nListenFd, (struct sockaddr *)&addr, (int *)&len);59 CPosaLog::Printf(CPosaLog::L_DEBUG, "Accept a connect from [%s:%d]\n",60 inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));6162// 将连接付给SSL63 EXIT_IF_TRUE((ssl = SSL_new(ctx)) == NULL);64 SSL_set_fd(ssl, nAcceptFd);65int n1 = SSL_accept(ssl);66if (n1 == -1) {67const char* p1 = SSL_state_string_long(ssl);68int a = 2;69int b = a;70 }71// 进⾏操作72 memset(szBuffer, 0, sizeof(szBuffer));73 nLen = SSL_read(ssl, szBuffer, sizeof(szBuffer));74 CPosaLog::Printf(CPosaLog::L_DEBUG, "Get Len %d %s ok\n", nLen, szBuffer);7576 strcat(szBuffer, " this is from server");77 SSL_write(ssl, szBuffer, strlen(szBuffer));7879// 释放资源80 SSL_free(ssl);81 SSL_CTX_free(ctx);82 closesocket(nAcceptFd);8384return0;85 }View Code五、server证书 1、⽣成server证书:openssl genrsa -out server-key.pem 1024 2、创建证书请求:openssl req -new -out server-req.csr -key server-key.pem 3、⾃签署证书:openssl x509 -req -in server-req.csr -out server-cert.pem -signkey server-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 3650 4、将证书导出成浏览器⽀持的.p12格式:openssl pkcs12 -export -clcerts -in server-cert.pem -inkey server-key.pem -out server.p12 5、完成六、Client证书 ⽣成server证书:openssl genrsa -out client-key.pem 1024 创建证书请求:openssl req -new -out client-req.csr -key client-key.pem ⾃签署证书:openssl x509 -req -in client-req.csr -out client-cert.pem -signkey client-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 3650 将证书导出成浏览器⽀持的.p12格式:openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12七、即:使⽤相同的ca⽣成两个证书,⼀个是server.cer,⼀个是client.cer,注意⽣成server.cer的时候必须指明证书可以⽤于服务端的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
比亚迪培训讲义在J2EE中使用数字证书深圳市金蝶中间件有限公司2007年12月Table of Contents1 数字证书使用的场合 (3)2 数字证书的颁发 (3)2.1 概述 (3)2.2 创建自签名CA (3)2.2.1 生成ca私钥 (3)2.2.2 生成ca待签名证书 (4)2.2.3用CA私钥进行自签名,得到自签名的CA根证书 (4)2.2.4 f配置文档 (5)2.3 颁发服务器证书 (7)2.3.1 生成服务器私钥对及自签名证书 (7)2.3.2 生成服务器待签名证书 (7)2.3.3 请求CA签名服务器待签名证书,得到经CA签名的服务器证书 (8)2.3.4把CA根证书导入密钥库 mykeystore (8)2.3.5把经过CA签名的服务器证书导入密钥库mykeystore (8)2.4 颁发客户端证书 (9)2.4.1 生成客户端私钥 (9)2.4.2生成客户端待签名证书 (9)2.4.3请求CA签名客户端待签名证书,得到经CA签名的客户端证书 (10)生成客户端的个人证书client.p12 (10)2.5 CA根证书导入客户端 (11)2.6个人证书导入客户端 (11)3 在J2EE中使用证书 (11)3.1 配置SSL双向认证 (11)3.1.1 服务器端密钥库和信任库 (12)3.1.2修改Muxer服务 (12)3.1.3修改SecurityService服务 (13)3.2 在程序中获取证书信息 (13)4 练习 (13)5 附录 (14)5.1 SSL v3的处理步骤 (14)5.2 命令行调试SSL证书 (14)1 数字证书使用的场合●加密传输●机器比较固定●使用USB Key2 数字证书的颁发2.1 概述数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
证书授权中心(CA)对证书的数字签名过程即为证书的颁发过程。
CA非常重要!企业范围内,建议自建CA,或者采用可信任的证书颁发机构的ROOT CA。
下面介绍使用Openssl()结合JDK自带的keytool工具来产生CA证书、服务器证书以及可导入浏览器的PKCS#12格式个人证书。
2.2 创建自签名CA设置系统环境变量Path指向Openssl的bin目录建立工作目录:mkdir cacd ca2.2.1 生成ca私钥openssl dsaparam -out dsaparam 1024openssl gendsa -out dsakey dsaparam2.2.2 生成ca待签名证书openssl req -new -out ca-req.csr -key dsakey -config ..\f2.2.3用CA私钥进行自签名,得到自签名的CA根证书openssl x509 -req -in ca-req.csr -out ca-cert.cer -signkey dsakey -days 365至此,自签名CA根证书制作完毕。
当前目录下将产生四个文件,分别是:●ca-cert.cer●ca-req.csr●dsakey●dsaparam2.2.4 f配置文档## SSLeay example configuration file.# This is mostly being used for generation of certificate requests.#RANDFILE= .rnd#################################################################### [ ca ]default_ca= CA_default# The default ca section#################################################################### [ CA_default ]dir = sslcerts = $dir\certscrl_dir = $dir\crldatabase = $dir\index.txtnew_certs_dir = $dircertificate = $dir\cacert.pemserial = $dir\serialcrl = $dir\crl.pemprivate_key = $dir\privkey.pemRANDFILE = $dir\privkey.rnd# For the CA policy[ policy_match ]countryName= optionalstateOrProvinceName= optionalorganizationName= optionalorganizationalUnitName= optionalcommonName= suppliedemailAddress= optional# For the 'anything' policy# At this point in time, you must list all acceptable 'object'# types.[ policy_anything ]countryName= optionalstateOrProvinceName= optionallocalityName= optionalorganizationName= optionalorganizationalUnitName= optionalcommonName= suppliedemailAddress= optional#################################################################### [ req ]default_bits= 1024default_keyfile = privkey.pemdistinguished_name= req_distinguished_nameattributes= req_attributes[ req_distinguished_name ]countryName= Country Name (2 letter code)countryName_min= 2countryName_max= 2stateOrProvinceName= State or Province Name (full name)localityName= Locality Name (eg, city)anizationName= Organization Name (eg, company) organizationalUnitName= Organizational Unit Name (eg, section) commonName= Common Name (eg, your website's domain name) commonName_max= 64emailAddress= Email AddressemailAddress_max= 40[ req_attributes ]challengePassword= A challenge passwordchallengePassword_min= 4challengePassword_max= 20[ x509v3_extensions ]# under ASN.1, the 0 bit would be encoded as 80nsCertType= 0x40#nsBaseUrl#nsRevocationUrl#nsRenewalUrl#nsCaPolicyUrl#nsSslServerName#nsCertSequence#nsCertExt#nsDataType2.3 颁发服务器证书服务器端证书用来向客户端证明服务器的身份,也就是说在SSL协议握手的时候,服务器发给客户端的证书。
生成服务器证书时用到了JDK的密钥管理工具Keytool.建立工作目录:cd ..mkdir servercd server2.3.1 生成服务器私钥对及自签名证书生成的文件将保存在密钥库mykeystore中。
keytool -genkey -alias myserver -keyalg RSA -keysize 1024 -keypass keypass -storepass keypass -dname "cn=localhost, ou=support, o=apusic, l=shenzhen, st=guangdong, c=CN" -keystore mykeystore2.3.2 生成服务器待签名证书keytool -certreq -alias myserver -sigalg SHA1withRSA -file server.csr -keypass keypass -storepass keypass -keystore mykeystore2.3.3 请求CA签名服务器待签名证书,得到经CA签名的服务器证书openssl x509 -req -in server.csr -out server-cert.cer -CA ..\ca\ca-cert.cer -CAkey ..\ca\dsakey -days 365 -set_serial 022.3.4把CA根证书导入密钥库 mykeystorekeytool -import -alias caroot -file ..\ca\ca-cert.cer -noprompt -keypass keypass -storepass keypass -keystore mykeystore2.3.5把经过CA签名的服务器证书导入密钥库mykeystorekeytool -import -alias myserver -file server-cert.cer -noprompt -keypass keypass -storepass keypass -keystore mykeystore至此,服务器证书已经生成,并且已经将服务器证书、密钥、根证书导入到了密钥库mykeystore。
本环节产生三个文件:●mykeystore●server.csr●server-cert.cer2.4 颁发客户端证书个人证书用来向服务器证明个人的身份,也就是说在SSL协议握手的时候,客户端发给服务器端的证书。
同时个人证书中包含个人信息如用户名等,如果需要,这个用户名将作为登录服务器的用户名。