Java加解密(九)工具篇

目录

  • Java加解密实用工具
    • 1 OpenSSL
    • 2 Keytool
    • 3 XCA
    • 4 KeyStore Explorer

Java加解密实用工具

1 OpenSSL

OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。
例如Apache 使用它加密 HTTPS,OpenSSH 使用它加密 SSH。

OpenSSL整个软件包大概可以分成三个主要的功能部分:

  1. SSL协议库
    OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。
    虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个细节;二是OpenSSL实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目。
  2. 应用程序
    • 密钥证书管理
      密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。
      首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。
      在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。
      事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。
    • OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
  3. 密码算法库
    • 对称加密
      OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
    • 非对称加密
      OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
    • 信息摘要
      OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。

OpenSSL 包含一个命令行工具用来完成 OpenSSL 库中的所有功能,官网及下载地址:
https://www.openssl.org/
http://slproweb.com/products/Win32OpenSSL.html

2 Keytool

keytool 是JDK 提供的证书相关操作的命令行工具,只要安装JDK 并且配置好相应的环境变量或者切换工作目录至keytool工具目录下,就可以在命令窗口运行。

C:\Users\Administrator>keytool -help
密钥和证书管理工具

命令:

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

使用 "keytool -command_name -help" 获取 command_name 的用法

C:\Users\Administrator>
C:\Users\Administrator>keytool -certreq -help
keytool -certreq [OPTION]...

生成证书请求

选项:

 -alias                   要处理的条目的别名
 -sigalg                 签名算法名称
 -file                 输出文件名
 -keypass                   密钥口令
 -keystore             密钥库名称
 -dname                   唯一判别名
 -storepass                 密钥库口令
 -storetype           密钥库类型
 -providername     提供方名称
 -providerclass   提供方类名
 -providerarg               提供方参数
 -providerpath         提供方类路径
 -v                              详细输出
 -protected                      通过受保护的机制的口令
C:\Users\Administrator>keytool -changealias -help
keytool -changealias [OPTION]...

更改条目的别名

选项:

-alias                   要处理的条目的别名
-destalias           目标别名
-keypass                   密钥口令
-keystore             密钥库名称
-storepass                 密钥库口令
-storetype           密钥库类型
-providername     提供方名称
-providerclass   提供方类名
-providerarg               提供方参数
-providerpath         提供方类路径
-v                              详细输出
-protected                      通过受保护的机制的口令

3 XCA

XCA(X Certificate and key management) 是作为证书和密钥存储,以及作为签发证书的签名应用程序,是一个开源的工具,底层还是基于openssl的类库和API的。
首先需要下载并安装工具,官网地址为:https://www.hohnstaedt.de/xca/index.php/download
Java加解密(九)工具篇_第1张图片

4 KeyStore Explorer

KeyStore Explorer KeyStoreExplorer是Java命令行程序keytool和jarsigner的开源GUI替代工具。KeyStore Explorer通过直观的图形用户界面展示其丰富的功能。

首先需要下载并安装工具,官网地址为:https://keystore-explorer.org/downloads.html
Java加解密(九)工具篇_第2张图片
Java加解密(九)工具篇_第3张图片

你可能感兴趣的:(java,web,开发工具,java,ssl,https)