文档章节

自签数字证书

陈好
 陈好
发布于 2014/10/24 18:25
字数 1566
阅读 1403
收藏 13

概念:

1. 数字证书认证机构(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构或证书授权中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

2. CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

参考:http://blog.csdn.net/howeverpf/article/details/21622545

http://www.cnblogs.com/littlehann/p/3738141.html

SSL生成证书流程

server生成私钥server.key--> 生成csr -> +(ca.key+ca.crt)-> 生成证书server.crt
                                      /
CA导出私钥(ca.key)和证书(ca.crt)
                                      \
client生成私钥client.cky--> 生成csr -> +(ca.key+ca.crt)-> 生成证书client.crt

步骤:

A. 制作CA证书

1. 制作ca.key CA私钥:

openssl genrsa -des3 -out ca.key 2048

ca.key是密钥文件名,是生成的rsa私钥,des3算法,openssl格式,2048位强度;-out指定生成文件的文件名。

注意:这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密。后面的2048是生成密钥的长度。

为了生成这样的密钥,默认中间需要输入一个密码(适用于有安全需求的场合)。可以通过以下方法生成没有密码的key(其实就是从密钥对中提取了私钥,一般无此必要):  

openssl rsa -in ca.key -out ca.key ##此时生成的ca.key没有密码

2.用CA私钥进行自签名,得到自签名的CA根证书

openssl req -new -x509 -days 365 -key ca.key -out ca.crt ##这里及下面的ca.key均带密码

注意:碰到"Unable to load config info from /usr/local/ssl/openssl.cnf"时,请下载一个可用的openssl.cnf,并追加参数"-config openssl.cnf路径"即可.

"req":openssl子命令,用于生成证书;"-new":生成新的证书请求;"-days 365":从生成之时算起,证书时效为365天(仅当使用-x509选项后有效);"-x509":生成自签名证书,没有该项时表示生成csr.

生成证书时,需输入识别证书持有者身份的信息,下表是关于它们的缩写、说明和一些填写说明。【此部分参考了互动百科的SSL条目】(带"*"重要,必填)

DN字段名
缩写 说明(我的信息) 填写要求
Country Name C 证书持有者所在国家(CN) *要求填写国家代码,用2个字母表示
State or Province Name ST 证书持有者所在州或省份(zhejiang) 填写全称,可省略不填
Locality Name L 证书持有者所在城市(hangzhou) 可省略不填
Organization Name O 证书持有者所属组织或公司(xxx) *最好还是填一下
Organizational Unit Name OU 证书持有者所属部门(no) 可省略不填
Common Name CN 证书持有者的通用名(XXX.com) *必填。
对于非应用证书,它应该在一定程度上具有惟一性;
对于应用证书,一般填写服务器域名或通配符样式的域名。
Email Address   证书持有者的通信邮箱(xxx@xxx.com) 可省略不填

注意:证书的详细信息-使用者或颁发者中出现一些明明没有设置过的信息时,请检查openssl.cnf [req_distinguished_name],注释掉*_default的参数.

B.用CA签名认证

1.创建server待签名证书私匙

因为这里只是用于测试,这里选择1024强度.

openssl genrsa -aes128 -out server.key 1024

注意:golang中使用https时需另从密钥对中提取私钥"openssl rsa -in  server.key -out server_pri.key.

2. 生成 csr 文件(证书请求文件)

openssl req -new -key server.key -out server.csr

此时,在common name中填入网站域名,如blog.xxx.net即可生成该站点的证书,同时也可以使用泛域名如*.xxx.net来生成所有二级域名可用的网站证书.多域名证书可通过修改openssl.cnf生成.

其他说明:"Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #加密证书请求的密码,证书请求需要在网络上传递,所以加密防止别人窥探,一般不用填
An optional company name []:  #不清楚,不用填
"时,

3.为 csr 文件签名,生成证书

openssl ca -policy policy_anything -days 365 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt

参数说明:

ca                        //使用openssl的ca子命令
-in server.csr            //指定待签发证书的 CSR文件为 server.csr
-out server.crt           //指定输出所签发证书的信息到文件,且文件名为server.crt
-cert ca.crt              //指定为证书签名的CA的公钥证书为ca.crt【用到CA证书的持有者信息】
-keyfile ca.key           //指定为证书签名的CA的私钥文件为ca.key【用CA私钥实际执行签名】
-days 365                 //指定所签发证书的有效期为365天(1年),不允许超过ca.crt的有效期
-policy policy_anything   //指定签发策略为 policy_anything 【即,允许所签发证书的持有者信息和颁发者信息之间不遵守任何匹配策略】
-md                       //指定签名哈希算法[默认是openssl.cnf中的default_md]

如果ca.key没有密码,以上命令后输入两次”y”,即可生成server.crt.

错误:

1."“I am unable to access the..."

按照openssl.cnf里的[CA_default]定义

mkdir -p demoCA/newcerts
touch ./demoCA/index.txt
echo "01" > demoCA/serial #颁发证书时使用的序列号,使用后会递增.重置serial时,需清空newcerts文件夹和index.txt

C. 导入证书

将ca.crt导入自己的操作系统即可(证书[未导入前]上有提示导入到哪个项目下).


ps:

Mozilla、思科、Akamai、IdenTrust、EFF和密歇根大学研究人员宣布了 Let’s Encrypt CA项目,计划为网站提供免费SSL证书,加速将Web从HTTP过渡到HTTPS(从2015夏开始,详细:http://linux.cn/article-4254-1.html).

SSL证书详解--数字签名和数字证书 http://www.livyfeel.com/ssl/

其他参考:https://linux.cn/article-5443-1.html

© 著作权归作者所有

陈好

陈好

粉丝 12
博文 126
码字总数 32990
作品 0
杭州
程序员
私信 提问
JSSE简单使用(三)

客户端和服务器端证书的生成,请看: http://my.oschina.net/xinxingegeya/blog/266826 http://www.ibm.com/developerworks/cn/java/j-lo-socketkeytool/ 参考文章:http://www.ibm.com/deve......

秋风醉了
2014/05/21
390
0
快钱开发注意要点

快钱开发注意要点 1>证书的下载 根据<< 快钱人民币网关自助接入文档>>中的”快捷生产环境联调步骤”获取本地证书并上传,然后在官网中下载快钱公钥证书 2>证书的路径读取 特别注意的是linux系...

文心丶雕龙
2016/10/09
23
0
如何在阿里云•对象存储OSS托管用户域名的https证书

面向人群 您已经拥有了自己的域名。 您已将或准备将自己的域名绑定到OSS域名上,并且使用您自己的域名访问OSS Bucket上的数据。 您希望为此域名(自己的域名)添加安全证书,可以通过https访问...

newegg11
2018/04/11
0
0
怎样使用PDF Transformer+中数字化签署

如今的企业每天都要处理大量的文档文件,这些文件大多数是电子格式,然而,审批程序或者考虑到文档的合法有效,个人签名总是少不了的,签署电子文档(包括PDF)有很多方式,这取决于文档的目...

ABBYY
2016/01/19
15
0
数字签名与数字证书

数字签名与数字证书 1,定义解释 数字签名 将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符...

剽悍一只鸡
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
5
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
5
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
15
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部