证书生成和管理总结

一、OpenSSL工具管理证书

OpenSSL 是一个强大的安全套接字层密码库,包括了加密算法,常用密钥和证书管理,SSL协议等功能。OpenSSL提供的命令非常多,这里只简单列出OpenSSL生成密钥和证书的一些操作(Window需要以管理员身份运行cmd):

  • 生成PEM格式的密钥
openssl genrsa -out rsakey0.pem 2048

算法为rsa,长度为2048,保持到rsakey0.pem文件中。

openssl genrsa -des3 -out rootca.key 1024

使用DES3加密

  • 生成X509格式的自签名证书
openssl req -x509 -new -days 365 -key rsakey.pem -out cert0.crt

会要求输入区别名DN的各项信息(国家,城市,组织,姓名,email等)。

根证书是认证中心机构(Certificate Authority)给自己签发的证书,签发者就是自身,是信任链的起点。里面包含了CA信息、CA公钥、用自身的私钥对这些信息的签名。下载并使用根证书就表示你信任它的来源机构,自然也信任证书以下签发的所有证书。某个证书可以用签发他的证书中的公钥验证,签发他的证书又需要上一层签发证书来验证,直到通过根证书中的公钥验证,那么这个证书就是可信任的。

  • 生成要求根证书签发子证书的请求文件
openssl req -new -key rsakey1.pem -out subcertreq.csr

会要求输入区别名DN的各项信息(国家,城市,组织,姓名,email等),还需要额外属性:密码 和 可选公司名。

  • 使用根证书签发子证书
openssl x509 -req -in subcertreq.csr -CA cert0.crt -CAkey rsakey0.pem -CAcreateserial -days 365 -out subcert.crt

也可创建一个ca的配置文件,通过ca管理子命令来签发子证书(未试验)

 openssl ca -config ca.config -out user.crt -infiles user.csr
  • 将证书和密钥打包为pkcs12格式的库中
openssl pkcs12 -export -in subcert.crt -inkey rsakey1.pem -out subcert.p12

需要输入pkcs12文件密码。

  • 查看证书内容
openssl x509 -noout -text -in rootca.crt
  • 验证证书
 openssl verify -CAfile rootca.crt subcert.crt

用rootca.crt的公钥验证subcert.crt中的签名

  • 相关文件

OpenSSL生成的密钥文件(.pem),签发请求文件(.csr)和证书文件(.cet)都是用纯文本格式保存了Base64编码后的信息。可以用文本编辑器打开,内容如下:

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArlUX2v998Y+Ek/AzoDdsbW7ILyRpwXVBMDqmOf3ZZpbP/4vo
.....省略若干行......
buL0a0BOFi7dyJjWgtEyYTFQgYSeezHl/+XyOhuJlTyvZWUpm5w=
-----END RSA PRIVATE KEY-----

首行和末尾行会被忽略,首行中显示了文件中存储的信息类型。

二、Keytool工具管理证书

keytool是Java提供的密钥、证书和证书库管理工具。可以完成生成密钥,生成证书等各种操作。

keytool的子命令如下:

-certreq     生成证书请求
-changealias    更改条目的别名
-delete      删除条目
-exportcert       导出证书
-genkeypair      生成密钥对
-genseckey       生成密钥
-gencert           根据证书请求生成证书
-importcert       导入证书或证书链
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd       更改条目的密钥口令
-list                  列出密钥库中的条目
-printcert          打印证书内容
-printcertreq     打印证书请求的内容
-printcrl           打印 CRL 文件的内容
-storepasswd    更改密钥库的存储口令

还可以使用 keytool -command_name -help 查看各个子命令的帮助信息

  • pkcs12库中证书导入jks证书库(java keystore格式)
keytool -importkeystore -srckeystore subcert.p12 -destkeystore subcert.jks -srcstoretype pkcs12

需要输入目标库的密码和源库的密码,如果jks库文件不存在的话会自动生成。

 

  • 导入证书到jks库
keytool -importcert -keystore subcert.jks -alias rootca -file rootcert.crt

需要输入目标库密码和是否信任添加的证书。-alias可以省略,如果jks库文件不存在的话会自动生成。

证书库或者说密钥库中即可以存放密钥也可存放证书,如果只包含证书(证书中有公钥)而不包含私钥,这样生成的库就是trust库。

参考资料:

OppenSSL文档: https://www.openssl.org/docs/apps/openssl.html

Keytool文档:http://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html

http://zhtx168.blog.163.com/blog/static/41601548200812503248/

http://blog.csdn.net/kimylrong/article/details/43525333

时间: 2024-08-04 00:33:38

证书生成和管理总结的相关文章

caddy 反代wordpress + ssl证书生成

caddy 反代wordpress + ssl证书生成 安装caddy 1:升级系统: sudo yum update 2:安装 EPEL repository: sudo yum install epel-release 3:安装 Caddy: sudo yum install caddy 4:文件 /usr/bin/caddy -conf /etc/caddy/caddy.conf 添加反向代理配置 www.robinplus.com { # 同时启用 http 和 https 不会自动转跳

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端

ssh-keygen - 生成、管理和转换认证密钥

通常使用:[b]ssh-keygen -i -f 公密匙名>> authorized_keys[/b]语法详细介绍[code]ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-foutput_keyfile]ssh-keygen -p[-P old_passphrase] [-N new_passphrase] [-f keyfile]ssh-keygen -i[-f input_keyfile]ssh-k

ios证书生成

iOS有两种证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试 发布(Distribution)证书和描述文件 用于提交Appstore 准备环境 必需要有苹果开发者账号,并且加入了“iOS Developer Program” Mac OS 10.9以上系统(如果已经申请p12证书则不需要) 登录iOS Dev Center 打开网站iOS Dev Center 使用苹果开发者账号登录iOS Dev Center: 登录成功后在页面右侧选择“Cer

ssl证书生成

ssl证书生成 openssl req -new -x509 -days 3650 -nodes -out /opt/ssl/certs/postfix.pem -keyout /opt/ssl/private/postfix.pem 第一个是证书,第二个是key(私钥) 可以应用在很多程序上. 下面举两个例子: nginx postfix nginx ssl server { listen 443; server_name _; ssl on; ssl_certificate /opt/ssl

X509 证书生成

X509证书介绍 X.509 是由国际电信联盟(ITU-T)制定的数字证书标准,相信这是人尽皆知的了,目前X.509证书据我所知有三个版本,.net中使用的是x.509-2,X.509-2 版引入了主体和签发人唯一标识符的概念,以解决主体和/或签发人名称在一段时间后可能重复使用的问题,x509-2(以下简称x509)证书由两把钥匙组成,通常称之为密钥对,公钥加密,私钥解密.今天我想在这里对x509进行一个深入的介绍和了解,因为在WCF的安全体系中,x509证书应用是非常频繁的,或者说是不可缺少的

HTTPS证书生成原理和部署细节

今天摸索了下 HTTPS 的证书生成,以及它在 Nginx 上的部署.由于博客托管在 github 上,没办法部署证书,先记录下,后续有需要方便快捷操作.本文的阐述不一定完善,但是可以让一个初学者了解大致的原理,同时跟着操作可以为自己的博客/网站部署一个 HTTPS 证书. 网站部署 HTTPS 的重要性 看看下面,部分电信用户访问京东首页的时候,会看到右下角有一个浮动广告: 小白用户以为是京东有意放置的,细心的用户会发现,这个 iframe 一层嵌一层的恶心广告很明显是电信/中间人通过 DNS

Openssl CA证书生成以及双向认证,及windows系统证书批量导出,android cer转bks

Openssl CA证书生成以及双向认证 首先本文主要参照这篇文章写的 http://h2appy.blog.51cto.com/609721/1181234 只是途中有些问题折腾了一下,比如openssl.cnf如何来的,这个文件在编译完openssl后,应该openssl根目录下/apps/demoCA有个,可以把他拷贝到openssl.exe同一级目录 里面有些目录配置,自己可以修改下,但是我没有修改,所以最后生成的文件路径必须按openssl.cnf里面来,至于如何编译openssl 请

iOS消息推送证书生成以及Push消息(转)

iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone应用程序的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器. 上图可以分为三个阶段: 第一阶段:应用程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone. 第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按