Secure Sockets Layer (SSL) 和Transport Layer Security (TLS) 用于在客户端和服务器之间建立加密通信通道。
JAVA通过JSSE(javax.net.ssl) , 提供了对SSL和TLS的支持。通过其所提供的一系列API,开发者可以像使用普通Socket一样使用基于SSL或TLS的安全套接字,而不用关心 SSL和TLS协议的细节,例如握手的流程等等。这使利用JAVA开发安全的SSL/TLS服务器或客户端非常容易。
如何使用javax.net.ssl,在网上有很多相关的资料,这里就不多说了。
下面主要说一说如何配置SSL/TLS服务器。
Sun在JDK中提供了一个安全钥匙与证书的管理工具Keytool。Keytool 把钥匙,证书以及和与它们相关联的证书链储存到一个keystore,默任的实现keystore的是一个文件,它有一个密码保护存储在其中的内容。
配置一个SSL/TLS服务器需要以下几步:
假设服务器的域名是:test.server.net
1.为服务器的keystore,以存储证书等。
keytool -genkey -alias test.server.net -keyalg RSA -keystore <your_keystore_filename>
在执行上面的命令式,会要求用户输入一些信息,例如keystore密码,服务器区域等等,依照提示输入即可。
2.生成一个Certificate Signing Request (CSR),CSR是提供给证书颁发机构,供证书颁发机构依据其中信息生成证书的。
keytool -certreq -keyalg RSA -alias test.server.net -file certreq.csr -keystore <your_keystore_filename>
3.将CSR提供给证书颁发机构CA,等待CA颁发证书:
知名的CA有
Versign,
Thawte等。
4.在CA等网站上下载CA的根证书。
5.导入CA的根证书到keystore中
keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file <filename_of_the_root_certificate>
6.导入CA颁发的证书到keystore,CA通常不会直接返回一个文件,而是通过网页或email以文本形式提供,需要用户自己创建一个文件,再将文本拷入。
keytool -import -alias test.server.net -keystore <your_keystore_filename> -trustcacerts -file <your_certificate_filename>
这样就完成对服务器的配置,最后为服务器指定这个keystore就可以了。
注意:一定导入正确的CA根证书,最常见的错误就是没有导入或导入错误的CA根证书。
注意:有些客户端,在使用SSL/TLS时必须通过域名来连接服务器,不能通过IP地址来连接。其所连接的服务器域名和服务器的证书的颁发对象必须相同。例如服务器的域名是test.server.net,那么服务器的证书也必须是颁发给test.server.net的。
证书颁发机构都会免费提供给用户用于测试的证书和相关的根证书,这种测试用的证书通常只有14天到30天不等的有效期。
在SSLServerSocket这个类中有一个setNeedClientAuth方法,当这个选项设为true时,客户端和服务器在协商时,服务器会要求客户端也提供验证信息,如果客户端不能提供,服务器就会终止会话。
这需要一些额外的配置:
假设客户端是alice,服务器是server
一个客户端的KeyStore文件,该文件中包含了对alice的授权:
keytool -genkey -alias alice -keystore <client_keystore_filename>
一个服务器端的KeyStore文件,该文件中包含了对server的授权。
keytool -genkey -alias server -keystore <server_keystore_filename>
一个名为clientTrust的客户端TrustStore文件,该文件中包含了对server的授权
keytool -export -alias server -keystore serverKeys -file server.cer
keytool -import -alias server -keystore clientTrust -file server.cer
一个名为serverTrust的服务器端TrustStore文件,该文件中包含了对alice的授权
keytool -export -alias alice -keystore clientKeys -file alice.cer
keytool -import -alias alice -keystore serverTrust -file alice.cer
将客户端的证书加入到服务器的TrustStore中,同时将服务器的证书加入到客户端的TrustStore中,使客户端和服务器互相信任。
分享到:
相关推荐
sslyze, 快速强大的SSL/TLS 服务器扫描库 SSLyze 用于 python 2.7和 3.4 +的快速和功能强大的SSL/TLS 服务器扫描库。描述SSLyze是一个 python 库和一个可以通过连接它来分析服务器的SSL配置的CLI工具。 它的设计是...
Windows 2008、2012、2016 服务器版本 SSL/TLS协议信息泄露漏洞(CVE-2016-2183),SSL 配置工具
密码学基础,TLS 协议,PKI 体系及其安全性,HTTP 和浏览器问题,协议漏洞;最新的攻击形式, 如BEAST、CRIME、BREACH、Lucky 13 等;详尽的部署建议;...如何使用Apache httpd、IIS、Nginx 等进行安全配置。
介绍密码学和最新的TLS协议版本 ...分析最新的攻击,如BEAST、CRIME、BREACH、Lucky 13、RC4、三次握手和心脏出血 ...给出使用Apache httpd、IIS、Java、Nginx、Microsoft Windows和Tomcat进行安全服务器配置的实际建议
SSLScan是一个用于扫描目标服务器SSL/TLS安全配置的工具,它可以检测出服务器所支持的SSL/TLS协议版本、加密套件、证书等信息,并可以评估出服务器的安全性。SSLScan可以帮助管理员了解服务器的SSL/TLS配置情况,...
本报告就如何配置SSL/TLS以提供最先进的身份验证和加密技术提出了一般性建议。ssl引擎提供的选项是从 自从Netscape开发SSL2.0以来的早期。TLS的引入使问题变得更具有挑战性,因为服务器和客户端根据各个ssl引擎提供...
安装后就同时支持SMTP(SSL/TLS), POP3(SSL/TLS), IMAP4(SSL/TLS), WebMail(HTTP/HTTPS) 支持邮件组,支持自定义用户策略,支持外发邮件审核,支持Web后台管理系统, 运行的平台Linux和MySQL均为免费平台(支持32位和...
客户端与服务器建立安全(即SSL / TLS)连接。 随后,在两个端点之间交换了几个随机消息。 这对应用程序主要是用于握手。 性能测试SSL服务器和SSL客户端。 这对应用程序允许测量各种密码套件和/或密钥大小对性能的...
它可以让您通过连接服务器来分析服务器的SSL / TLS配置,以检测各种问题(错误证书,弱密码套件,Heartbleed,ROBOT,TLS 1.3支持等)。 SSLyze可以用作命令行工具或Python库。 主要特点 完整 ,以便直接从Python...
IIS Crypto软件是一款专门为电脑服务器打造的智能管理工具,使管理员能够在Windows Server 2008、2012和2016上启用或禁用协议、密码、散列和密钥交换算法。...同时提供证书格式转换,CSR,证书链,SSL配置生成等。
4. SSL/TLS配置改进:Tomcat 9 对 SSL/TLS 配置进行了改进,包括对密码套件、协议版本和证书管理等方面的增强。 5. JSP 2.3和EL 3.0的改进:Tomcat 9 继续支持 JSP 2.3 和 EL 3.0 规范,并对其进行了一些改进和优化...
HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的。HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层...
在Windows系统中配置HTTPS的SSL证书在服务端TLS协议中启用TLS1.2,推荐配置:TLSv1 TLSv1.1 TLSv1.2,用于微信小程序报错。
网络服务器配置与管理课件项目10使用SSLTLS安全连接网站.pptx
4. SSL/TLS配置:如果需要支持HTTPS,可以在虚拟主机配置中添加SSL证书和密钥的路径,并设置协议版本和密码套件。 5. 反向代理和负载均衡:通过配置反向代理,可以将客户端的请求转发给后端的应用服务器。负载均衡...
服务器并获取有关其配置的一些信息。 它旨在提供(部分)基于 Internet 的工具(如 )的功能,但不要求服务器可通过 Internet 访问。 您可以在内部网络上使用 TestSSLServer 来测试您的服务器,而它们(尚未)从外部...
NULL 博文链接:https://zhaoshijie.iteye.com/blog/2215393
服务器全局配置 站点导航 停止和重启 suEXEC支持 致谢与译者声明 从2.0升级到2.2 从1.3升级到2.0 从URL到文件系统的映射 Apache 1.3 API 备忘录 APR中内存分配的调试 Apache 2.0 文档制作 Apache 2.0 过滤器工作原理...