数字证书

数字证书

一、 知识储备
  1. 编码方式
DER:无报头,二进制编码
PEM:有报头,报头用ASCII编码,内容用base64编码

DER 和 PEM 为文件编码方式!

  1. 文件格式
crt:证书文件,通常为PEM编码
cer:证书文件,通常为DER编码
key:秘钥文件,通常为PEM编码
csr:证书请求文件,通常为PEM编码
jks:java证书库
pfx/p12:Windows的IIS用,为DER编码,linux上通常密钥与证书分离,此格式文件将密钥与证书合在一起存放,提取信息需要密码,功能与jks类似
crl:证书吊销列表
二、常用命令
1. 创建数字证书

​ keytool 生成CA自签名证书

#先用keytool创建一个放入jks中的CA自签名证书
keytool -genkeypair -alias server -keypass changeit -storepass changeit  -dname "C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN=vihoo.com" -keyalg RSA -keysize 2048 -validity 3650 -keystore server.keystore
#再用keytool导出其中的证书
keytool -alias server -exportcert -keystore server.keystore -file server.cer -storepass changeit

openssl生成CA自签名证书

#使用openssl生成CA自签名证书
# private key
openssl genrsa -out ca.key 2048 
# generate csr
openssl req -new -key ca.key -out ca.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=ca.com"
# generate certificate
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
#使用一条命令直接生成证书请求文件
openssl req -out ca.crt -new -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 3650 -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=ca.com"

openssl生成CA签名的用户证书

#首次执行需要先创建CA目录,否则生成证书报错 "./demoCA/newcerts: No such file or directory" 
cp /etc/ssl/openssl.cnf .
mkdir -p ./demoCA/newcerts 
touch demoCA/index.txt 
touch demoCA/serial 
echo 01 > demoCA/serial

#使用openssl生成CA签名的用户证书
# private key
openssl genrsa -out server.key 2048
# generate csr
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=server.com"
# generate certificate
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -batch

#若报错 "failed to update database",执行以下任意一条命令,或者使用CN不同的 csr 文件
sed -i 's/unique_subject = yes/unique_subject = no/g' demoCA/index.txt.attr

cat /dev/null > demoCA/index.txt

openssl生成吊销列表

# 首次执行需要先创建目录,移入根证书文件
mkdir -p ./demoCA/private
cp ca.key ./demoCA/private/cakey.pem
cp ca.crt ./demoCA/cacert.pem
echo '00' >./demoCA/crlnumber

#吊销证书
openssl ca -revoke server.crt
#生成吊销列表
openssl ca -gencrl  -out server.crl 

openssl生成证书链

#生成根CA
openssl req -out rootCA.crt -new -newkey rsa:2048 -nodes -keyout rootCA.key -x509 -days 3650 -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=rootCA.com"
#生成二级CA
openssl genrsa -out secondCA.key 2048
openssl req -new -key secondCA.key -out secondCA.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=secondCA.com"
openssl ca -extensions v3_ca -in secondCA.csr -out secondCA.crt -cert rootCA.crt -keyfile rootCA.key -batch
#生成三级CA
openssl genrsa -out thirdCA.key 2048
openssl req -new -key thirdCA.key -out thirdCA.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=thirdCA.com"
openssl ca -extensions v3_ca -in thirdCA.csr -out thirdCA.crt -cert secondCA.crt -keyfile secondCA.key -batch
#签名服务证书(普通私钥)
openssl genrsa -out src.key 2048
openssl req -new -key src.key -out src.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=src.com"
openssl ca -in src.csr -out src.crt -cert thirdCA.crt -keyfile thirdCA.key -batch
#签名服务证书(加密私钥)
openssl genrsa -out src.key 2048
openssl pkcs8 -in src.key -topk8 -out encsrc.key -passout pass:changeit
openssl req -new -key encsrc.key -out encsrc.csr -subj "/C=CN/ST=GD/L=SZ/O=ca/OU=dev/CN=encsrc.com" -passin pass:changeit
openssl ca -in encsrc.csr -out encsrc.crt -cert thirdCA.crt -keyfile thirdCA.key -batch
#生成证书链
cat rootCA.crt secondCA.crt thirdCA.crt > chain.crt
2. 证书内容查看
#使用keytool查看cer证书
keytool -printcert -file server.cer
#使用keytool查看crt证书
keytool -printcert -file server.crt
#使用openssl查看cer证书
openssl x509 -inform DER -text -in server.cer
#使用openssl查看crt证书
openssl x509 -text -noout -in server.crt
#使用openssl查看吊销列表
openssl crl -text -in server.crl
3. 证书格式转换
#cer转crt
openssl x509 -inform DER -in server.cer -out server1.crt
#crt转cer
openssl x509 -in server.crt -outform DER -out server1.cer
4. 证书合并
#合并俩crt证书
cat server.crt server1.crt > server2.crt
#合并俩cer证书
cat server.cer server1.cer > server2.cer
5. 将数字证书导入jks
#导入cer证书至jks
keytool -import -file server2.cer -noprompt -alias servercer -keystore keystore.jks -storepass changeit
#导入crt证书至jks
keytool -import -file server2.crt -noprompt -alias servercrt -keystore keystore.jks -storepass changeit
#导入jks证书至jks
keytool -importkeystore -noprompt -deststorepass changeit -destkeystore dest.keystore -srckeystore src.keystore -srcstorepass changeit -srckeypass changeit -destalias triagen -alias src.server
#将p12证书导入jks
keytool -importkeystore -noprompt -deststorepass changeit -destkeystore dest.keystore -srckeystore src.p12 -srcstorepass changeit -srckeypass changeit -srcstoretype PKCS12 -destalias triagen -alias src.server
#将证书链证书导入jks
cat chain.crt encsrc.crt > all.crt
openssl pkcs12 -export -inkey encsrc.key -in all.crt -name chaincert -out chain.p12 -passin pass:changeit -passout pass:changeit
keytool -importkeystore -noprompt -deststorepass changeit -destkeystore dest.keystore -srckeystore chain.p12 -srcstorepass changeit -srckeypass changeit -srcstoretype PKCS12 -destalias triagen -alias chaincert
6. 证书库生成
#jks证书库生成
keytool -genkeypair -alias server -keypass changeit -storepass changeit  -dname "C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN=vihoo.com" -keyalg RSA -keysize 2048 -validity 3650 -keystore server.keystore
#pkcs12证书库生成
keytool -genkeypair -alias server -keypass changeit -storepass changeit  -storetype PKCS12 -dname "C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN=vihoo.com" -keyalg RSA -keysize 2048 -validity 3650 -keystore src.p12
7. 证书库查看
#keytool查看jks证书库
keytool --list -rfc -keystore keystore -storepass changeit
#keytool查看p12证书库
keytool --list -v -storetype PKCS12 -keystore keystore.p12 -storepass changeit
#keytool查看单个证书信息
keytool --list -rfc -keystore keystore -storepass changeit -alias mykey
三、参考链接:

1、如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...
2、 生成带保护口令的私钥
3、 Creating a password protected PKCS #12 file for certificates

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

推荐阅读更多精彩内容

  • 本文资料来源于网络,本人根据需要进行了汇集整理,如有侵权,请联系本人删除 数字证书介绍 数字证书就是互联网通讯中标...
    木子_礼阅读 2,014评论 3 4
  • 数字证书也称电子证书,由数字证书颁发认证机构(CA)签发才具备可认证性。数字证书采用了公钥基础设施(PKI),使用...
    DreamsonMa阅读 1,794评论 0 5
  • 这篇文章主要介绍了Mobile BI(移动商务智能)在安全网络通信中涉及的数字证书认证的背景知识以及相应实现的认证...
    雨_树阅读 992评论 0 2
  • 转载自:https://www.jianshu.com/p/42bf7c4d6ab8 数字证书就是网络通讯中标志通...
    KMGTP阅读 951评论 0 1
  • 写这篇文章的起因是遇到了需要本机配置支持HTTPS协议的情况。 我们知道,因为HTTPS的安全性,越来越多的网络应...
    Jason_M_Ho阅读 13,005评论 1 8