用openssl 和 keytool 生成 SSL证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用openssl 和 keytool 生成 SSL证书相关的知识,希望对你有一定的参考价值。
参考技术ASSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被设计为加强Web安全传输(HTTP/HTTPS/)的协议(事实上还有SMTP/NNTP等) ,默认使用443端口
openssl 适用范围广。
keytool 单独针对 java application
数字证书是现代互联网中个体间相互信任的基石。
如果没有了数字证书,那么也就没有了各式各样的电商平台以及方便的电子支付服务。目前我们所提到的数字证书都是基于 ITU 制定的 X.509 标准。
简单来说,数字证书就是一张附带了数字签名的信息表。
x509证书一般会用到三类文件,key,csr,crt。
Key是私用密钥,openssl格式,通常是rsa算法。
csr是证书请求文件(certificate signing request),用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
crt是CA认证后的证书文件(certificate),签署人用自己的key给你签署的凭证。
CA根证书的生成步骤
生成CA私钥(.key)-->生成CA证书请求(.csr)-->自签名得到根证书(.crt)(CA给自已颁发的证书)。
本质上就是用私钥去获取证书,然后把这两个文件一起放到server,以此来证明 我就是我 。
上面是交互式输入,非交互的方式如下
自签名是免费/测试的证书,浏览器默认不认可。
通常的方法是:提交CSR到证书公司(比如VeriSign,Inc),等对方发来证书。(当然这是要花钱的)
比如nginx服务器,把 ca.key 和 ca.crt 放到 /etc/nginx/certs 目录。修改/etc/nginx/nginx.conf
重启服务生效
引入一个概念:SAN
SAN stands for “ Subject Alternative Names ” and this helps you to have a single certificate for multiple CN (Common Name).
简而言之,用SAN是为了省钱,一个证书给多个网址使用。如果用之前的交互方式来申请证书,根本没有地方来输入SAN,要解决这问题,需用到配置文件。
The entries in SAN certificate:
Create new Private Key and Certificate Signing Request
生成 private key 和 生成 CSR 合并成一步
例子
于是 ca.csr ca.key 都生成了,csr 用于申请证书。
Keytool 是一个Java数据证书的管理工具 , Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。
这是java专用方式,过程跟openssl 类似。
服务器配置可以使用私钥+证书合并在一起的文件,如jks或者pkcs12文件,这类文件一般叫key.keystore。(openssl使用两个文件)
(openssl 自签名参考上面)
测试阶段,也可以用keytool 来实现自签名(根据证书请求生成证书)。
用 jenkins 来举例
查看单个证书
列出keystore存在的所有证书
使用别名查看keystore特定条目
删除keystore里面指定证书
更改keysore密码
导出keystore里面的指定证书
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
使用keytool生成ssl证书
使用keytool生成ssl证书
在项目中由于要使用https访问项目,然后了解到jdk有一个自带的工具keytool可以用来生成ssl证书,从而可以通过https进行访问。
使用keytool生成ssl证书的流程如下:
具体实现可以参考博文:http://blog.csdn.net/zmken497300/article/details/53186730
以上是关于用openssl 和 keytool 生成 SSL证书的主要内容,如果未能解决你的问题,请参考以下文章