http://blog.csdn.net/gloomuu/article/details/4456501
Step 1. Create key (password protected)
openssl genrsa -out prvtkey.pem 1024/2038 (with out password protected)
openssl genrsa -des3 -out prvtkey.pem 1024/2048 (password protected)
这个命令会生成一个1024/2048位的密钥。
Step 2. Create certification request
openssl req -new -key prvtkey.pem -out cert.csr
openssl req -new -nodes -key prvtkey.pem -out cert.csr
这个命令将会生成一个证书请求,当然,用到了前面生成的密钥prvtkey.pem文件
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。
Step 3: Send certificate request to Certification Authority (CA)
如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:
openssl req -new -x509 -key prvtkey.pem -out cacert.pem -days 1095
这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem
cacert.pem 生成过程见“OpenSSL建立自己的CA”
有了privkey.pem和cacert.pem文件后就可以在自己的程序中使用了,比如做一个加密通讯的服务器
-------------
OpenSSL建立自己的CA
(1) 环境准备
首先,需要准备一个目录放置CA文件,包括颁发的证书和CRL(Certificate Revoke List)。
这里我们选择目录 /var/MyCA。
然后我们在/var/MyCA下建立两个目录,certs用来保存我们的CA颁发的所有的证书的副本;private用来保存CA证书的私钥匙。
除了生成钥匙,在我们的CA体系中还需要创建三个文件。第一个文件用来跟踪最后一次颁发的证书的序列号,我们把它命名为serial,初始化为01。第二个文件是一个排序数据库,用来跟踪已经颁发的证书。我们把它命名为index.txt,文件内容为空。
$ mkdir /var/MyCA
$ cd /var/MyCA
$ mkdir certs private
$ chmod g-rwx,o-rwx private
$ echo "01" > serial
$ touch index.txt
第三个文件是OpenSSL的配置文件,创建起来要棘手点。示例如下:
$ touch openssl.cnf
文件内容如下:
[ ca ]
default_ca = myca
[ myca ]
dir = /var/MyCA
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/certs
private_key = $dir/private/cakey.pem
serial = $dir/serial
default_crl_days= 7
default_days = 365
default_md = md5
policy = myca_policy
x509_extensions = certificate_extensions
[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = supplied
organizationName= supplied
organizationalUnitName = optional
[ certificate_extensions ]
basicConstraints= CA:false
我们需要告诉OpenSSL配置文件的路径,有两种方法可以达成目的:通过config命令选项;通过环境变量OPENSSL_CONF。这里我们选择环境变量的方式。
$ OPENSSL_CONF=/var/MyCA/openssl.cnf"
$ export OPENSSL_CONF
(2) 生成根证书 (Root Certificate)
我们需要一个证书来为自己颁发的证书签名,这个证书可从其他CA获取,或者是自签名的根证书。这里我们生成一个自签名的根证书。
首先我们需要往配置文件里面添加一些信息,如下所示,节名和命令行工具的命令req一样。我们把所有必要的信息都写进配置,而不是在命令行输入,这是唯一指定X.509v3扩展的方式,也能让我们对如何创建根证书有个清晰的把握。
[ req ]
default_bits = 2048
default_keyfile = /var/MyCA/private/cakey.pem
default_md = md5
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
[ root_ca_distinguished_name ]
commonName = My Test CA
stateOrProvinceName = HZ
countryName = CN
emailAddress = test@cert.com
organizationName = Root Certification Authority
[ root_ca_extensions ]
basicConstraints = CA:true
万事俱备,我们可以生成根证书了。注意设置好环境变量OPENSSL_CONF。
$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 356
注:“-days 356“控制有效期限为365天,默认为30天。
验证一下我们生成的文件。
$ openssl x509 -in cacert.pem -text -noout
(3) 给客户颁发证书
在给客户颁发证书之前,需要客户提供证书的基本信息。我们另外开启一个终端窗口,使用默认的OpenSSL配置文件(不要让之前的OPENSSL_CONF干扰我们,那个配置是专门用来生成根证书的)。
命令和我们生成根证书的类似,都是req,不过需要提供一些额外的信息。如下:
$ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM
有两次提示要口令,第一次的口令用来加密私钥匙testkey.pem,第二次口令一般被OpenSSL忽略。
结果生成两个文件:testkey.pem,私钥匙;testreq.pem,请求信息,其中包括公钥匙。
我们来看看testreq.pem都有哪些信息?
$ openssl req -in testreq.pem -text -noout
现在,我们可以把testreq.pem提交给我们的CA生成证书了。
为了方便起见,我们假定testreq.pem在//var/MyCA/private/中。
$ openssl ca -in testreq.pem
有三次提示,一次是问你CA的私钥匙密码,两次是确认,输出的结果就是为客户颁发的证书。
可以通过batch选项取消命令提示,可通过notext选项取消证书的输出显示。
此外,还可以一次给多个客户颁发证书,方法是用 infiles选项替换in选项,不过这个选项必须放在最后,因为此后的任何字符均被处理为文件名称列表。
生成的证书放在certs目录,同时index.txt和serial的内容都发生了改变。
相关推荐
他们会给你发来两个cer文件,一个是服务器证书,一个是根证书 如果你只是要使用https,那么证书自己签署就可以了。 在命令行下进入刚才解压的目录,找到openssl.exe所在的目录,执行以下命令 openssl x509 -req -...
用openssl签发ssl x.509证书 建立根证书: 制做服务器端的证书并用ca签名: 生成crt格式 生成cer格式
通过shell脚本生成CA根证书,并且通过CA根证书自签服务器、客户端等证书; 自签后可以实现局域网内https证书信任。该证书可以实现V3(SAN)证书扩展名,解决谷歌浏览(Google Chrome)提示没有主题备用名称的问题。
1. 介绍了不用编译源代码,在Windwos下载安装包直接安装OpenSSl的方法. 2. 基于OpenSSl生成根证书, 服务器证书,和客户端证书. 3. 在VS2010环境下, 给出一个基于OpenSSL-1_0_2的开发实例.
用于生成服务器端和客户端的各种证书! 根证书:ca-cert.cer 服务器端:laoxie.keystore 客户端:client.p12
使用MADCert创建根和中间证书颁发机构,颁发用户和服务器证书等以进行测试。 MADCert是一种跨平台工具,不需要在操作系统中安装OpenSSL或任何其他程序。 先决条件 您将需要在操作系统上安装Node.js。 对于Linux和...
创建根证书RSA私钥:1.3. 创建CA证书1.4. 创建服务端私钥1.5. 创建服务端签名请求证书文件1.6. 创建签名生效的服务端证书文件1.7. 创建客户端私钥1.8. 创建客户端签名请求证书文件1.9. 创建extfile.cnf的配置文件...
生成 nginx 配置一个单独的 bash 脚本,除了 openssl 之外没有任何依赖项,非常适合 Docker 配置默认生成 RSA 2048(但可配置为任何密钥大小) 证书管理器脚本在一个命令中创建全套自签名证书和 CA 文件;...
tls-gen是基于OpenSSL的工具,可生成用于开发和QA环境的自签名证书。 该项目最初是从许多测试套件中提取的。 它能做什么 tls-gen生成一个自签名的证书颁发机构(CA)证书以及两对或更多对密钥:客户端和服务器,...
特征用于加密消息的未破解 OpenSSL 算法(请求仍通过 HTTP 发送以绕过端口阻止程序) 解密的消息只通过不可见的本地连接传输,永远不会保存简单、跨平台和无结构的系统,无需设置点对点更新和证书生成本地聊天共享的...
反向代理和Web服务器 通过NGINX反向代理服务的网站的简单测试也配置有ssl证书。 Web服务器和NGINX在两个不同的Docker容器上运行,... 生成新的自我生成的证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -