openssl 自签名证书 - 制作证书(二)

【上一篇:openssl 自签名证书 - 安装openssl(一)】

事前准备

相关:
pem、key:私钥文件,对数据进行加密解密
csr:证书签名请求文件,将其提交给证书颁发机构(ca、CA)对证书签名
crt:由证书颁发机构(ca、CA)签名后的证书或者自签名证书,该证书包含证书持有人的信息、持有人的公钥以及签署者的签名等信息
关于证书相关格式转换本文不做介绍


终端输入命令:vim /usr/local/openssl/ssl/openssl.cnf,根据自己具体的安装路径查找openssl的默认配置文件即可,部分内容如下图显示:

openssl默认配置部分截图

dir:默认的ssl工作目录,可以修改默认目录,这里是安装完默认的
certs:存放已经签发的证书
newcerts:存放CA新生成的证书
private:存放私钥
crl:存放已经吊销的证书
index.txt:已签发证书的文本数据库文件
serial:序列号存储文件,序列号为16进制数存储供证书签发使用序列号做参考
.rand:私有随机文件,
生成随机数命令:openssl rand -out xxx/.rand 1024
1024表示随机数长度
在生成证书的临时目录里创建默认配置目录文件命令,一键梭哈:
mkdir -p ./demoCA/certs; mkdir -p ./demoCA/crl; mkdir ./democA/newcerts; mkdir -p ./demoCA/private; touch ./demoCA/index.txt; touch ./demoCA/serial; echo 01 > ./demoCA/serial;


创建自己生成证书的临时文件夹:mkdir ~/Desktop/openssl_ssl
进入文件夹:cd ~/Desktop/openssl_ssl,然后将之前提到过得【openssl.cnf】文件复制到此,开始制作证书用于之后的socket编程里

1. 制作ca根证书

1.1 生成ca根证书私钥

openssl genrsa -aes256 -out ca.key 2048

genrsa:使用RSA算法生成私钥
-aes256:使用256位密钥的AES算法对私钥进行加密
-out:输出文件路径
2048:私钥长度
输入完命令会让你输入两遍私钥文件的密码

1.2 生成ca根证书请求文件

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

req:执行证书签发命令
-new:新的证书签发请求
-key:指定私钥文件的路径
-out:csr文件的输出路径
输入完命令会让你输入ca根证书私钥的密码并填写一些信息,如下所示:
You are about to be asked to enter information that will be incorporated
into 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 blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.


Country Name (2 letter code) [AU]:cn 【国家代码两个字母可为空,ca、server、client要一致】
State or Province Name (full name) [Some-State]:【省份,ca、server、client要一致】
Locality Name (eg, city) []:【城市】
Organization Name (eg, company) [Internet Widgits Pty Ltd]:【公司名,ca、server、client要一致】
Organizational Unit Name (eg, section) []:【组织名】
Common Name (e.g. server FQDN or YOUR name) []:【不可为空,全限定域名或名字】
Email Address []:【邮箱】

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:【输入密码】
An optional company name []:【可选的公司名】

上面输入的ca请求信息在后续申请使用该ca证书签名的请求证书要保证一致。

1.3自己作为ca机构签发根证书(自签发证书)

openssl x509 -req -days 365 -signkey ca.key -in ca.csr -out ca.crt

x509:用于自签名证书,生成x509格式的证书
-req:请求签名
-days:证书有效期
-signkey:证书签发的私钥
-in:证书请求文件,有效的文件路径
-out:ca签名后的证书输出路径

2. 制作server端证书

用刚才的ca证书为使用端签发证书

2.1 生成server端私钥

openssl genrsa -aes256 -out server.key 2048
连续输入两次密码

2.2 生成server端证书请求文件

openssl req -new -key server.key -out server.csr
同样的会让你输入刚才私钥的密码,并填写和ca根证书请求文件一样的信息,两者要保持一样

2.3 使用ca根证书为server端签发证书

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

-in:输入证书签名请求文件
-out:签名后的证书输出路径
-cert:ca根证书
-keyfile:ca根证书私钥文件
-config:配置文件

3 制作client端证书

套路和server端基本是一样的,下面就直接上命令了

3.1 生成client端私钥

openssl genrsa -aes256 -out client.key 2048

3.2 生成client端证书请求文件

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

3.3 使用ca根证书为client端签发证书

openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

文件变化:1. index.txt本地数据库文本文件多了两条信息、2. serial序列号文件的序列号递增了、3. newcerts文件夹多了两个证书、4. 其它...

到这里我们就可以结束了,我们已经得到了ca.crt、server.key、server.crt、client.key、client.crt,我们就可以开始编程了。
双向认证要保证server、client端证书签名的ca要一样或者期限没有过期否则会认证失败

【下一篇:openssl 自签名证书 - socket编程应用(三)】


4. 导出证书

4.1 导出server端证书

导出时会让你输入server端私钥的密码,即server-key.pem的密码,验证通过后再输入两次证书导出的密码
openssl pkcs12 -export -clcerts -name server-p12 -inkey server.key -in server.crt -out server-p12.keystore

4.2 导出client端证书

导出同server操作是一样的,先输入client-key.pem的密码,在输入两次证书导出的密码
openssl pkcs12 -export -clcerts -name client-p12 -inkey client.key -in client.crt -out client-p12.keystore

4.3 导出受信任的证书

keytool -importcert -trustcacerts -alias localhost -file ca-crt.cer -keystore ca-trust.keystore

终端显示:

输入密钥库口令:
再次输入新口令:
所有者: EMAILADDRESS=【邮箱地址】, CN=127.0.0.1, OU=【组织名】, O=【公司】, L=【市】, ST=【省份】, C=cn【国家代码】
发布者: EMAILADDRESS=【邮箱地址】, CN=127.0.0.1, OU=【组织名】, O=【公司名】, L=【市】, ST=【省份】, C=cn【国家代码】
序列号: 4272b0ce733*************316f20cfe5f6a182
生效时间: Mon Jan 28 11:12:17 CST 2019, 失效时间: Tue Jan 28 11:12:17 CST 2020
证书指纹:
SHA1: C1:B6:C6:B3:95:8F:3C:12:B8:C4:AB:5E:8B:0D:03:6B:6D:B2:1E:D3
SHA256: 31:BF:B7:EA:F3:72:E9:28:95:55:41:76:F0:7B:24:19:2B:FF:C7:C4:AA:AE:63:EF:6C:98:69:5A:49:37:56:3F
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 1
是否信任此证书? [否]: y【终端输入y/n】
证书已添加到密钥库中

现在就可以使用ca证书,server端证书和私钥,client端证书和私钥开始socket编程了...

【下一篇:openssl 自签名证书 - socket编程应用(三)】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容