社区
Java
帖子详情
急·急!!如何实现网络“证书”认证?
jltt
2003-07-28 02:09:21
请问如何实现网络“证书”认证?
我们单位是一家为客户提供各种服务的网站。因为通常的登陆是一个用户名、密码可以被任意人使用;现在要做的是一个用户名、密码只能被一个客户使用。
请问这样该如何实现?
...全文
123
3
打赏
收藏
急·急!!如何实现网络“证书”认证?
请问如何实现网络“证书”认证? 我们单位是一家为客户提供各种服务的网站。因为通常的登陆是一个用户名、密码可以被任意人使用;现在要做的是一个用户名、密码只能被一个客户使用。 请问这样该如何实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nettman
2003-07-28
打赏
举报
回复
具体过程如下:
用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。
客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
4.配置Tomcat 4.x 使用SSL
4.1 用到的软件包
Tomcat 4.0.2
用途:Web Server。
下载: http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/
JSSE 1.0,2
用途:用来产生Tocmcat使用的秘钥对(keystore)。
下载: http://java.sun.com/products/jsse/
Openssl 0.9.9.6
用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。
下载: http://www.openssl.org/
以上工具的安装过程可以参考自带的帮助,本文就不再详细描述了。
4.2 建立自己的CA
4.2.1 建立工作目录
mkdir ca
4.2.2 生成CA私钥以及自签名根证书
4.2.2.1 生成CA私钥
openssl genrsa -out ca\ca-key.pem 1024
4.2.2.2 生成待签名证书
openssl req -new -out ca\ca-req.csr -key ca\ca-key.pem
4.2.2.3 用CA私钥进行自签名
openssl x509 -req -in ca\ca-req.csr -out ca\ca-cert.pem -signkey ca\ca-key.pem -days 365
4.3 设置Tomcat 4.x
在本文中用符号"%JDK_HOME%"来表示JDK的安装位置,用符号"%TCAT_HOME%" 表示Tomcat的安装位置。
4.3.1建立工作目录
mkdir server
4.3.2 生成server端证书
4.3.2.1 生成KeyPair
%JDK_HOME%\bin\keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=Beijing, st=Beijing, c=CN" -keystore server\server_keystore
4.3.2.2 生成待签名证书
%JDK_HOME%\bin\keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server\server.csr -keypass changeit -keystore server\server_keystore -storepass changeit
4.3.2.3 用CA私钥进行签名
openssl x509 -req -in server\server.csr -out server\server-cert.pem -CA ca\ca-cert.pem -CAkey ca\ca-key.pem -days 365
4.3.2.4 导入信任的CA根证书到JSSE的默认位置(%JDK_ROOT %/jre/security/cacerts)
%JDK_HOME%\bin\keytool -import -v -trustcacerts -storepass changeit -alias my_ca_root -file ca\ca-cert.pem -keystore %JDK_HOME%\jre\lib\security\cacerts
4.3.2.5 把CA签名后的server端证书导入keystore
%JDK_HOME%\bin\keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server\server-cert.pem -keystore server\server_keystore
4.3.2.6 查看server端证书
keytool -list -keystore %JDK_HOME%\jre\lib\security\cacerts
keytool -list -keystore server\server_keystore
4.3.3 修改server.xml使Tomcat支持SSL
首先找到以下内容,去掉对其的注释。然后参照红色部分修改。如果配置Tomcat不验证客户身份,可以设置
clientAuth="false"。
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0" scheme="https" secure="true">
<Factory className="org.apache.catalina.net.SSLServerSocketFactory"
clientAuth="true" protocol="TLS"
keystoreFile="%TCAT_HOME%/conf/server_keystore" keystorePass="changeit"
/>
然后把文件server\server_keystore复制到目录%TCAT_HOME%\conf\下。
4.4 在IE中安装个人证书
4.4.1 建立工作目录
mkdir client
4.4.2 生成client私钥并用CA私钥签名
4.4.2.1 生成client私钥
openssl genrsa -out client\client-key.pem 1024
4.4.2.2 生成待签名证书
openssl req -new -out client\client-req.csr -key client\client-key.pem
4.4.2.3 用CA私钥进行签名
openssl x509 -req -in client\client-req.csr -out client\client.crt -signkey client\client-key.pem
-CA ca\ca-cert.pem -CAkey ca\ca-key.pem -CAcreateserial -days 365
4.4.2.4 生成client端的个人证书
因为JSSE1.0.2没有完全实现了对PKCS#12格式文件的操作(只能读取,不能输出),所以在这里需要用openssl制作client端的个人证书(包含私钥)。
openssl pkcs12 -export -clcerts -in client\client.crt -inkey client\client-key.pem -out client\client.p12
4.4.2.5 安装信任的根证书
把ca\ca-key.pem改名为ca\ca-key.cer,在client端的IE中使用"工具 ' Internet选项 ' 内容 ' 证书 ' 导入"把我们生成的CA根证书导入,使其成为用户信任的CA。
4.4.3 安装个人证书
把client.p12导入到client端的IE中作为个人证书,导入过程同4.4.2.5。
4.5 用IE浏览器使用SSL协议访问Tomcat
4.5.1 启动Tomcat 4.x
执行%TCAT_HOME%\bin\startup.bat启动Tomcat 4.x
4.5.2 用IE访问Tomcat 4.x
在IE浏览器的地址栏中输入https://localhost:8443,如果前面的操作都正确的话,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
5 结论
以上我们实现了为Tomcat 4.x配置要求客户端验证的SSL的全过程。对于其它类型的服务器,例如Apache,Netscape Enterprise Server, Websphere,Weblogic等,一般只是在服务器端保存证书的方式略有不同,但它们的原理都是类似的,配置时可以在本文中办法的基础上做出相应的调整。
参考资料
Tomcat SSL Configuration HOW-TO
SSL3.0规范
Description of the Secure Sockets Layer (SSL) Handshake (Q257591)
keytool - Key and Certificate Management Tool
Openssl使用手册
nettman
2003-07-28
打赏
举报
回复
配置Tomcat 4使用SSL
-----------------------
内容:
1.Tomcat简介
2.SSL(Server Socket Layer)简介
3.SSL工作原理
4.配置Tomcat 4.x 使用SSL
5.结论
赵 梁 (b-i-d@163.com) 2002 年 5 月
赵梁,1995年毕业于北京航空航天大学。对J2EE, J2ME以及CORBA, Web Service等技术比较感兴趣。目前的主要工作是采用J2EE技术开发供分销企业使用的供应链/销售链ERP。可以通过电子邮件 b-i-d@163.com 与作者联系。
----------------------
目前介绍配置Tomcat 4使用单向SSL认证(只验证服务器证书)的资料很多,过程也比较简单。但是由于配置其使用双向SSL认证(还需要验证客户端个人证书)除了需要CA对证书签名外,还要从CA获得个人证书。有关这一问题,目前结合具体web服务器来讲解如何操作的资料很少。作者通过摸索借助一些SSL工具在本地实现了简单的CA功能,并在此基础上配置成功了Tomcat的双向认证,希望能把其中的一些经验与大家共享。不过受本人水平所限,文中难免会有错误与不当之处,敬请大家谅解。
1.Tomcat简介
Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
2.SSL(Server Socket Layer)简介
在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断发展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。 之后IETF(www.ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。
3.SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https://ip:port/的方式来访问。当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。
jltt
2003-07-28
打赏
举报
回复
就是“数字签名证书”,请问怎么实现?
2022年HCIA Datacom华为
认证
课程实战视频教程题库课程
本课程技术视频均为理论+实战配套讲解,讲解细致,通俗易懂,可以让大家学到实实在在企业用到的
网络
技术,能够帮助你快速掌握...共94课时视频,同时第一节课视频里面课件包含了HCIA Datacom题库,
实现
技术+
证书
双赢!
2023
网络
安全工程师可以考哪些
证书
?
但是先别
急
,作为一名
网络
安全的学员,如果还没有进入
网络
安全工作岗位,那么,首要任务是。若是通过自己的能力找到一份对口的
网络
安全工作,那就再好不过了,毕竟你所掌握的技术才是你的硬核武器!在学习的初始阶段...
不断发展的
网络
应用程序引发了安全问题,这个岗位
急
缺人!!
不断发展的
网络
应用程序引发了安全问题,这个岗位
急
缺人!!
中高级前端面试秘籍!金三银四如何直通大厂?!(长文)
原型 (prototype): 一个简单的对象,用于
实现
对象的 属性继承。可以简单的理解成对象的爹。在 Firefox 和 Chrome 中,每个 JavaScript对象中都包含一个 __proto__ (非标准)的属性指向它爹(该对象的原型),可 obj.__...
中高级前端面试秘籍!金三银四如何直通大厂?!
原型 (prototype): 一个简单的对象,用于
实现
对象的 属性继承。可以简单的理解成对象的爹。在 Firefox 和 Chrome 中,每个 JavaScript对象中都包含一个 __proto__ (非标准)的属性指向它爹(该对象的原型),可 obj.__...
Java
50,527
社区成员
85,606
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章