SSL/TLS服务器配置

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中,使客户端和服务器互相信任。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值