分类: SSL2010-06-25 11:51 73人阅读 收藏 举报
配置支持SSL的Tomcat
转自--http://openssl.cn/program_top_detail.asp?program_id=1&article_id=&topic_id=1272
关键字 SSL Tomcat Openssl keytool
一、配置环境
1.1 Tomcat简介
Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
1.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的差别非常微小。
1.3 SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https://ip:port/的方式来访问。
当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下:
用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。
客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。
如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。
客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
1.4 所需软件包
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/
二 配置步骤
2.1 建立自己的CA证书
1.在openssl的apps目录下建立自己的CA目录,例如:mageCA
mkdir mageCA
2.生成CA密钥
openssl genrsa -out mageCA/ca-key.pem 1024
genrsa [产生密钥命令] –out[密钥文件输出路径] 1024 [密钥位数]
3.生成待签名的证书
openssl req -new -out mageCA/ca-req.csr -key mageCA/ca-key.pem
req[产生证书命令]-new[新生成]-out[证书文件输出路径]-key[私钥文件路径]
4.用CA私钥自签名
openssl x509 -req -in mageCA/ca-req.csr -out mageCA/ca-cert.pem -signkey mageCA/ca-key.pem -days 365
x509[签发x509证书命令]-req[输入待签发证书]-in[输入待签发证书文件路径]-out[产生x509证书文件输出路径]-signkey[自签发密钥文件路径]-days[证书有效期]–CA[签发跟证书]-Cakey[根证书密钥文件] –Cacreateserial[创建序列号]
[注] 将自动生成的ca-key.srl文件拷贝到创建的CA目录下.。
2.2 配置Tomcat 4.X
2.2.1 建立服务器证书
[注] 在本文中用符号"%JDK_HOME%"来表示JDK的安装位置,用符号"%TCAT_HOME%" 表示Tomcat的安装位置。
1. 建立工作目录
在%JDK_HOME%的bin目录下建立自己的server目录,例如:server
mkdir server
2. 生成server密钥对
%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
-genkey[产生密钥对]-alias[密钥对别名]-validity[密钥有效期]-keyalg[密钥算法参数]-keysize[密钥位数]-keypass[密钥保护密码]-storepass[存储密码]-dname[别名相关附加信息]-keystore[密钥存储文件路径]
[注] -alias后的tomcat_server是密钥对的名字可替换为自己需要的名字;
-keypass与-storepass后的changeit为保护密码必须6位,将其替换为你的密码即可;
-dname为包含的server信息。其中cn是服务器的名字一定要与WEB服务器中设置的一样。
3. 生成待签名证书
%JDK_HOME%/bin/keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file server/server.csr -keypass changeit -keystore server/server_keystore -storepass changeit
-certreq[产生待签名证书]-alias[证书别名]-sigalg[证书算法参数]-file [产生文件输出路径]-keypass[密钥保护密码]-keystore[存储文件路径]-storepass[存储密码]
4. 用CA私钥签名
openssl x509 -req -in server/server.csr -out server/server-cert.pem -CA mageCA/ca-cert.pem -CAkey mageCA/ca-key.pem -days 365
[注] 先将生成的server.csr文件ftp到linux上openssl的目录下的server子目录中,ftp的传输模式应设为bin模式,以下同。
2.2.2 将CA根证书和服务器证书导入Tomcat
1. 导入CA根证书
将CA根证书(ca-cert.pem)ftp到Java工作目录下的ca子目录中
%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
-import[导入命令]-v –trustcacerts[导入信任证书] –storepass[存储密码]-alias[证书别名]-file[证书文件路径]-keystore[导入文件路径]
[注] 此处的-storepass为默认的“changeit”。-alias为CA根证书的别名。
2. 导入服务器证书
将服务器证书(server-cert.pem)ftp到Java工作目录下的server子目录中。
%JDK_HOME%/bin/keytool -import -v -trustcacerts -storepass changeit -alias tomcat_server -file server/server-cert.pem -keystore server/server_keystore
[注] 此时的-storepass为生成证书时输入密码。-alias为服务器证书的别名。
3. 查看证书
查看CA证书
keytool -list -keystore %JDK_HOME%/jre/lib/security/cacerts
查看服务器证书
keytool -list -keystore server/server_keystore
2.2.3 修改Tomcat的配置文件
修改conf目录下server.xml文件找到以下内容去掉其注释并修改。
<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="false"
acceptCount="10" debug="0" scheme="https" secure="true">
<Factory className="org.apache.catalina.net.SSLServerSocketFactory"
clientAuth="true" protocol="TLS"
keystoreFile="c:/jakarta-tomcat-4.0-b1/conf/server_keystore" keystorePass="780608"
/>
</Connector>
然后把文件server/ server_keystore复制到目录%TCAT_HOME%/conf/下
2.3 配置IE客户端
2.3.1 建立Client证书
1. openssl的apps目录下建立自己的Client目录,例如:client
2. 生成Client密钥对
openssl genrsa -out client/ client –key.pem 1024
3. 生成待签名的证书
openssl req -new -out client/ client-req.csr -key client/ client-key.pem
4. 用CA私钥签名
openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey c lient/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 365
5. 生成Client端可以导入的个人证书
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
pkcs12[生成PKS12格式证书命令]-export[导出文件]-clerts[仅导出client证书]-in[输入的client证书文件路径]-inkey[client证书密钥文件路径]-out[导出PKS12格式文件路径]
2.3.2 将CA证书与client证书导入IE
1. 导入CA根证书
将已经ftp到Java工作目录下ca子目录中的ca-cert.pem改名为ca-cert.cer;
在client端的IE中使用<工具>,< Internet选项>,<内容>,<证书>,<导入>,把我们生成的CA根证书导入,使其成为用户信任的CA。
2. 导入client证书
将client证书(client.p12)ftp到Client端,把client.p12导入到client端的IE中作为client证书,导入过程同上
三 用IE浏览器使用SSL协议访问Tomcat
1. 执行%TCAT_HOME%/bin/startup.bat启动Tomcat 4.x;
2. 在IE浏览器的地址栏中输入https://localhost:8443,如果前面的操作都正确,应该可以看到Tomcat的欢迎页面。同时状态栏上的小锁处于闭合状态,表示您已经成功地与服务器建立了要求客户端验证的SSL安全连接。
分享到:
相关推荐
ssl自制全套证书(包含服务器端、客户端、ca端的证书,格式有.crt,.key,.truststore,.keystore,.p12,.cer,.pem等类型),当时要配置webservice接口、tomca、nginx通过ssl访问的证书,弄了好久才生成了一套能使用的。...
接下来,我们需要更新Nginx的配置文件以使用新的SSL证书。找到Nginx的配置文件(通常位于`/etc/nginx/nginx.conf`),并在server block中添加如下配置: ``` server { listen 443 ssl; server_name example.com...
在Jetty中配置SSL,我们通常需要使用OpenSSL来生成自签名的证书。 以下是使用OpenSSL自制SSL证书的步骤: 1. 安装OpenSSL:首先确保你的系统中已经安装了OpenSSL。如果未安装,可以通过相应的软件包管理器(如...
启用HTTPS通常需要在配置文件中指定证书和私钥的位置,以及设置正确的监听端口和SSL选项。 标签“java”、“https”、“nginx”、“crt证书”、“证书”进一步细化了这个工具的主要特性。Java是实现这个工具的编程...
cacerts包含了Java信任的CA(证书颁发机构)证书列表,这些证书用于在SSL/TLS通信中进行证书认证。 6. 证书的准备工作:需要先检查是否已经创建过同名的证书,并且如果有必要,删除已经存在的证书。 7. 创建服务器...
- **自制证书和密钥(测试)** - **自制服务端的证书和密钥**:在测试环境中,你可以自行创建服务端的证书和密钥,这通常通过OpenSSL等工具完成,生成PEM格式的公钥和私钥文件。 - **自制客户端的证书和密钥**:...
4. SSL证书:安装SSL证书,实现网站的HTTPS加密访问。 六、后期运维 1. 监控与日志:设置日志记录,实时监控网站状态,及时发现并解决问题。 2. 数据备份:定期进行数据库备份,防止数据丢失。 3. 更新与维护:...
综上所述,这个项目涉及到静态网站的搭建、CDN的使用、宝塔面板的管理、域名解析以及SSL证书的配置等多个IT领域的知识点。这些步骤对于一个初级Web开发者来说,是建立个人或小型项目网站的基础技能。
了解基本的服务器管理和安全设置,如SSL证书安装和防火墙规则,是确保网站稳定运行的关键。 7. **版本控制**:使用Git进行版本控制可以方便地管理代码,协同开发,并记录每次修改。学习如何创建分支、提交、合并和...
介绍 安装 1. 基本介绍和配置文件语法 2. 反向代理 3. gzip 压缩提升网站性能 4. 在线升级 5. 监控工具 ngxtop ...16. 使用 acme.sh 安装 Let’ s Encrypt 提供的免费 SSL 证书 17. 给 GitLab 应用加上 https
这些知识点涵盖了Nginx的基本使用、配置、性能优化、安全性、监控以及与SSL证书相关的内容,均为Nginx服务器的日常管理和运维工作中常用的技术点。掌握这些知识点,对于任何需要使用到Nginx的IT工程师来说都至关重要...
6. **安全性**:网站需保护用户数据,包括密码加密、防止SQL注入和XSS攻击,以及SSL证书确保数据传输安全。 7. **SEO优化**:为了增加网站可见性,需要进行搜索引擎优化,包括元标签设置、关键词策略、内链和外链...
为了保护用户的安全和隐私,应当考虑启用Webview的安全特性,如禁用不受信任的SSL证书(`setMixedContentMode()`),并尽可能限制JavaScript的执行权限。 6. **性能优化** - 使用`setCacheMode()`可以设置缓存...
5. 邮件传输安全:为了防止邮件在传输过程中被截获,SMTP支持使用TLS(Transport Layer Security)或SSL(Secure Sockets Layer)进行加密传输。这确保了邮件内容在发送时不被第三方窃取。 6. SMTP扩展:除了基本的...
Netlify还提供了很多附加服务,如自定义域名、SSL证书、性能优化等,使得网站部署变得简单而高效。 综上所述,"made-by-melanie"项目是一个使用现代Web技术构建的电子商务平台示例,它集成了Next.js的灵活性、...
9. **部署与运维**:完成开发后,需要将应用程序部署到服务器,这涉及到IIS配置、SSL证书安装、性能优化等方面。同时,监控系统性能和日志管理也是运维中的重要环节。 10. **持续集成/持续部署(CI/CD)**:采用Git...