ssl介绍
SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
1.openssl
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
Eric A. Young和Tim J. Hudson自1995年开始编写后来具有巨大影响的OpenSSL软件包,这是一个没有太多限制的开放源代码的软件包。Eric A. Young 和Tim J. Hudson是加拿大人,后来由于写OpenSSL功成名就之后就到大公司里赚大钱去了。1998年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,到目前为止,OpenSSL的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持。
OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。但习惯C语言总比使用C++重新写一个跟OpenSSL相同功能的软件包轻松不少。
基本功能
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
辅助功能
BIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等。这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多。
OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用OpenSSL的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。
官方网址
https://www.openssl.org/
0.9.8国内下载链接
https://www.chinassl.net/upload/software/win32openssl-0_9_8.rar
2.keytool
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图所示:
一. Keytool创建和导入命令
创建keystore和密钥对
Generate a Java keystore and key pair
keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048
为存在的keystore生成证书请求文件CSR
Generate a certificate signing request (CSR) for an existing Java keystore
keytool -certreq -alias mydomain -keystore keystore.jks -file mydomain.csr
导入根证书或中级证书到keystore
Import a root or intermediate CA certificate to an existing Java keystore
keytool -import -trustcacerts -alias root -file mydomain.crt -keystore keystore.jks
导入SSL服务器证书到keystore
Import a signed primary certificate to an existing Java keystore
keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks
为存在的keystore生成自签名证书
Generate a keystore and self-signed certificate
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
二. Keytool查看命令
查看单个证书
Check a stand-alone certificate
keytool -printcert -v -file mydomain.crt
列出keystore存在的所有证书
Check which certificates are in a Java keystore
keytool -list -v -keystore keystore.jks
使用别名查看keystore特定条目
Check a particular keystore entry using an alias
keytool -list -v -keystore keystore.jks -alias mydomain
三. 其他Keytool命令
删除keystore里面指定证书
Delete a certificate from a Java Keytool keystore
keytool -delete -alias mydomain -keystore keystore.jks
更改keysore密码
Change a Java keystore password
keytool -storepasswd -new new_storepass -keystore keystore.jks
导出keystore里面的指定证书
Export a certificate from a keystore
keytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks
列出信任的CA证书
List Trusted CA Certs
keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
导入新的CA到信任证书
Import New CA into Trusted Certs
keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore
下载网址
https://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase14-419411.html
3.KeyStore Explorer
KeyStore资源管理器
KeyStore Explorer是Java命令行实用程序keytool和jarsigner的开源GUI替代品。KeyStore Explorer通过直观的图形用户界面展示其功能等。
安全Java的简化开发
软件开发人员应该能够专注于手头的问题,而不必使用钝的命令行工具。使用KeyStore Explorer,密钥对生成和代码签名等难以执行的安全任务变得快速而简单。
管理KeyStores
KeyStore Explorer可用于通过其直观的图形界面创建和导航KeyStores。只需几个简单的对话框即可创建和修改,导入和导出KeyStores的内容。
广泛的格式支持
KeyStore Explorer支持各种KeyStore,密钥对,私钥和证书格式,并且可以在它们之间进行转换。有关支持的格式列表,请参阅功能。
基本CA功能
KeyStore Explorer可用于使用您自己的CA签署证书。支持各种证书扩展,请参阅规范。
签署Java代码
KeyStore Explorer提供了以JAR和J2ME“MIDlet”形式对Java应用程序进行数字签名的功能。
几乎无处不在
KeyStore Explorer是用Java编写的,可以在任何安装了Oracle JRE的机器上运行。因此,它的功能可在Windows,Mac,Unix和Linux上使用。
下载网址
http://keystore-explorer.org/downloads.html