用openssl 和 keytool 生成 SSL证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用openssl 和 keytool 生成 SSL证书相关的知识,希望对你有一定的参考价值。

参考技术A

SSL(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证书的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 如何生成证书

SSL 证书基本概念扫盲

怎样签发SSL证书

OpenSSL生成HTTPS自签名证书

openssl生成.pem证书

ssl认证证书SSL 证书基本概念证书格式openssl和keytool的区别