`

HTTPS tomcat配置与相关加密算法概论

 
阅读更多

 

HTTPS = SSL + HTTP

1.首先用jdk自带的工具keytool生成一个"服务器证书"

进入你的cmd命令行,在jdk安装目录bin目录下(如果没有配置环境变量的话)(JAVA_HOME/bin/) 敲入一下东东:

keytool -genkey -alias tomcat -keyalg RSA -keystore C:\tomcat.key
提示输入密码,使用Tomcat的默认值changeit //这里,你也可以定义自己的密码
输入相关信息后确认
将生成PCKS1.2格式的数字证书于C:\tomcat.key

 

 

===============ps:什么是数字证书、RSA是什么加密算法等============

1.0 你见过的DES,这个是什么:就是一个数据加密标准(首先由美国政府在1977年采用它对数据进行加密——理解为一个加密算法)

1.1 什么RSA——它是一种算法,也是一个公司的名称。见http://baike.baidu.com/view/696428.htm

1.2 什么是非对称加密和对称加密:非对称密钥加密就是加密和解密的密钥是不一样,对称密钥加密就是加密和解密的密钥是一样的

1.3 为什么要引进密钥这个概念,而不直接使用密码了?

      可以这么理解:由于密码技术本身是公开的,技术都公布比较准化了,对每一个人都是可以用的,如果每个人都知道数据编码的方法。入侵者可以从网络上爬下数据包然后使用各种公开的解密算法进行解密,很快就可以破解了。。所以需要一些秘密信息来阻止他们解密——密钥就这么产生了(密钥他们不知道)

1.4 非对称加密密钥(公开密钥)以及对称加密密钥

其实他是两个密钥,比如我要加密,我就使用RSA(非对称加密算法)生成一对密钥<K,D>,两个密钥不相同,一个密钥用来加密用,一个密钥用来解密用。。那个加密的被称为公共密钥,发给接收方,告诉接收方,你如果有数据发给我,请用我这个公共密钥进行加密后再传给我,发过来的数据,我使用那个解密的密钥(私钥)来解密了。(我们发现公共密钥是公开的,并在网络上传输给对方,即使被黑客下载了,也无法解密啊,因为解密密钥没有在网络上传输的)

过程如:http://baike.baidu.com/view/444169.htm

假设两个用户A,B进行通信,A先发送信息给B,然后B发送信息给A

  1. B先产生一对密钥k1a和k1b,前者用来加密,后者用来解密

  2. B把密钥k1a发送给A;(因为k1a只能用来加密,截获方无法通过它来解密并读取密文)

  3. A用密钥k1a加密一条信息,使之变成密文c1;

  4. A把密文c1发送给B;

  5. B用密钥k1b解密,并读取解密后的信息;

  6. A产生一对密钥k2a和k2b,前者用来加密,后者用来解密

  7. A把密钥k2a发送给B;

  8. B用密钥k2a加密一条信息,使之变成密文c2;

  9. B把密文c2发送给A;


  10. A用密钥k2b解密,并读取解密后的信息;

同理对称的,加密也解密的密钥都是相同的拉

  对称密钥加密的过程是:

  假设两个用户A,B进行通信,A先发送信息给B,然后B发送信息给A

  1. A先用密钥k1加密一条信息,使之变成密文c1;

  2. A把密钥k1发送给B;(此时如果密钥被截获,截获方就可以解密并读取密文)

  3. A把密文c1发送给B;

  4. B用密钥k1解密,并读取解密后的信息

  5. B用密钥k2加密一条信息,使之变成密文c2;

  6. B把密钥k2发送给A;

  7. B把密文c2发送给A;


  8. A用密钥k2解密,并读取解密后的信息

1.5 什么是不可逆算法,他为什么不需要密钥了?

不可逆算法,就是说即使告诉你加密技术,你也没有办法解密。没办法还原的,就这个意思。。既然他没有办法还原,如果黑客偷到了他,即使知道加密技术,也没办法还原,那还需要密钥干嘛了?所以 嘎嘎,就不需要密钥了。。不过我国的王教授还是牛逼的把md5给。。。。那个了。


1.6、什么是数字证书

由权威机构CA中心签发的证书,很多购物网站都有注册这个证书了,当你访问这些网站时候,浏览器可以检查证书判断的出来你这个证书是不是权威CA签发的的,然后给出提示相应提示,这样用户就不会上错到钓鱼网了。。。什么是钓鱼网?很多网站跟别人做一模一样的,然后你以为是真的,输入用户名和密码,,这下完蛋了,你的数据就传送到钓鱼网那些b手上了。。

数字证书是一种公开密钥加密(非对称加密算法)。


1.7、https其实就是让用户提交数据的时候,浏览器使用http应用程序封装成http数据,然后通过SSL对数据进行加密,然后交给系统tcp协议层程序进行封装等,再到网络层,数据链路层,物理层。。。最后发送到网站服务器上面。

而一般的http协议的,浏览器使用http应用程序封装成http协议规定格式数据(都是明文的啊,密码,用户名都是可以看到的),如果黑客在监听你的电脑,爬下你的数据,就可以看到密码和用户名了,所以比较危险的。。咳,用户登录页面最好使用https来弄

===================ps结束=纯属看书后个人理解,不一定正确=======================

 

2、我的tomcat是6.0.24版本打开你的server.xml添加一下内容

 

 

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"  
           port="8443" minSpareThreads="5" maxSpareThreads="75"  
           enableLookups="true" disableUploadTimeout="true"    
           acceptCount="100"  maxThreads="200"  
           scheme="https" secure="true" SSLEnabled="true"  
           clientAuth="false" sslProtocol="TLS"  
           keystoreFile="C:/tomcat.key"    
           keystorePass="changeit"/> 
 

 

3、然后打开你的https://127.0.0.1:8443/项目名    就可以访问了,你可以发现浏览器地址栏开头有一个红色叉叉,嘎嘎,因为这个数字认证不被浏览器认为是权威的。。

4、此时你可以使用http://127.0.0.1:8080/项目名称来访问,像淘宝登录页面那样,他支持两种协议进行登录。但是你如果强制要求http协议转成https来访问可以使用以下配置。。。在项目的web.xml里面:

 

//在欢迎配置下面添加如下  
<login-config>  
    <!-- Authorization setting for SSL -->  
    <auth-method>CLIENT-CERT</auth-method>  
    <realm-name>Client Cert Users-only Area</realm-name>  
	</login-config>  
	<security-constraint>  
	    <!-- Authorization setting for SSL -->  
	    <web-resource-collection >  
	        <web-resource-name >SSL</web-resource-name>  
	        <url-pattern>/*</url-pattern>  
	    </web-resource-collection>  
	    <user-data-constraint>  
	        <transport-guarantee>CONFIDENTIAL</transport-guarantee>  
	    </user-data-constraint>  
	</security-constraint> 
 

5、如果你已经申请了CA证书

 

查看一下内容转自http://sanlin0523.blog.sohu.com/25942986.html

 

作者:yellowtop Email: yellowtop@163.com 日期:2004-11-26 

以Verisign 测试证书为例 

1.创建一个本地证书: 

C:\j2sdk1.4.2_05\bin>;keytool -genkey -alias tomcat -keyalg RSA -keystore keystore 
输入keystore密码:  12345678 
您的名字与姓氏是什么? 
  [Unknown]:  www.test.com 
您的组织单位名称是什么? 
  [Unknown]:  system 
您的组织名称是什么? 
  [Unknown]:  test 
您所在的城市或区域名称是什么? 
  [Unknown]:  beijing 
您所在的州或省份名称是什么? 
  [Unknown]:  beijing 
该单位的两字母国家代码是什么 
  [Unknown]:  cn 
CN=liujx, OU=system, O=test, L=beijing, ST=beijing, C=cn 正确吗? 
  [否]:  y 

输入<tomcat>;的主密码 
        (如果和 keystore 密码相同,按回车): 

查看证书 
C:\j2sdk1.4.2_05\bin>;keytool -list -keystore keystore 
输入keystore密码:  12345678 

Keystore 类型: jks 
Keystore 提供者: SUN 

您的 keystore 包含 1 输入 

tomcat, 2004-11-26, keyEntry, 
认证指纹 (MD5): B8:44:A1:A2:C7:9A:09:EE:A0:CF:5B:AA:DC:F7:0F:80 


2.然后创建CSR: 

C:\j2sdk1.4.2_05\bin>;keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore keystore 

输入keystore密码:  12345678 

现在,你有了一个叫certreq.csr的文件,你可以将它提交到CA(参考CA网站上的文档怎样做)。然后就得到了证书。 
例如:我们申请了个Verisign.com的测试证书保存为:client.cer 

3.从你获得证书的CA下载Chain Certificate: 

例如: 
Verisign.com正式证书:去http://www.verisign.com/support/install/intermediate.html 
Verisign Test CA Root证书:去http://www.verisign.com/server2/trial/faq/index.html 


4.将Chain Certificate导入到keystore: 

例如:导入Verisign Test CA Root证书getcacert.cer 
C:\j2sdk1.4.2_05\bin>;keytool -import -trustcacerts -alias root -file getcacert.cer -keystore keystore 
输入keystore密码:  12345678 
Owner: OU=For VeriSign authorized testing only. No assurances (C)VS1997, OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD., O="VeriSign, Inc"
发照者: OU=For VeriSign authorized testing only. No assurances (C)VS1997, OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD., O="VeriSign, Inc"
序号: 52a9f424da674c9daf4f537852abef6e 
有效期间: Sun Jun 07 08:00:00 CST 1998 至: Wed Jun 07 07:59:59 CST 2006 
认证指纹: 
         MD5:  40:06:53:11:FD:B3:3E:88:0A:6F:7D:D1:4E:22:91:87 
         SHA1: 93:71:C9:EE:57:09:92:5D:0A:8E:FA:02:0B:E2:F5:E6:98:6C:60:DE 
信任这个认证? [否]:  y 
认证已添加至keystore中 

查看证书 
C:\j2sdk1.4.2_05\bin>;keytool -list -keystore keystore 
输入keystore密码:  12345678 

Keystore 类型: jks 
Keystore 提供者: SUN 

您的 keystore 包含 2 输入 

root, 2004-11-26, trustedCertEntry, 
认证指纹 (MD5): 40:06:53:11:FD:B3:3E:88:0A:6F:7D:D1:4E:22:91:87 
tomcat, 2004-11-26, keyEntry, 
认证指纹 (MD5): B8:44:A1:A2:C7:9A:09:EE:A0:CF:5B:AA:DC:F7:0F:80 



5.最后,导入你的新证书:  

C:\j2sdk1.4.2_05\bin>;keytool -import -trustcacerts -alias tomcat -file client.crt -keystore keystore 
.old 
输入keystore密码:  12345678 
认证回复已安装在 keystore中 

查看证书 
C:\j2sdk1.4.2_05\bin>;keytool -list -keystore keystore 
输入keystore密码:  12345678 

Keystore 类型: jks 
Keystore 提供者: SUN 

您的 keystore 包含 2 输入 

root, 2004-11-26, trustedCertEntry, 
认证指纹 (MD5): 40:06:53:11:FD:B3:3E:88:0A:6F:7D:D1:4E:22:91:87 
tomcat, 2004-11-26, keyEntry, 
认证指纹 (MD5): 68:33:EE:6C:5C:5B:70:B5:0D:85:3B:6D:AF:00:91:24 

注意:仔细观察tomcat项的认证指纹与导入之前是不同的。 

6.安装证书 

把最后生成的keystore文件,复制到tomcat安装路径的conf目录下 


7.修改Tomcat的配置文件server.xml 

    <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->; 
    <Connector port="8443"  
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
               enableLookups="false" disableUploadTimeout="true" 
               acceptCount="100" debug="0" scheme="https" secure="true" 
               clientAuth="false" sslProtocol="TLS"  
               keystoreFile="/conf/keystore" keystorePass="12345678"/>; 

8.重新启动Tomcat 

9.为IE浏览器安装测试根证书: 

双击getcacert.cer,安装测试根证书 

10.测试SSL 

打开IE输入https://www.test.com:8443/ 
 

待续~

 

分享到:
评论

相关推荐

    Tomcat配置数据库连接加密访问

    Tomcat配置数据库连接加密访问

    Tomcat配置HTTPS证书认证

    `Tomcat`作为一个流行的Java Servlet容器,支持HTTP和HTTPS协议,后者提供了加密和身份验证,确保数据传输的安全性。本篇文章将详细介绍如何在Tomcat中配置HTTPS证书认证,以便实现安全的Web服务。 首先,我们需要...

    des加密算法

    DES(Data Encryption Standard)数据加密标准是一种经典的对称加密算法,由IBM在1970年代初开发,并在1977年被美国国家标准局(NIST)采纳为标准。DES在信息安全领域扮演了重要的角色,尤其是在80年代和90年代,它...

    https原理及tomcat配置https方法

    (2)网站从中选出一组加密算法与 HASH 算法,并将自己的身份信息以证书的形式发回给浏览器。 (3)浏览器验证证书的合法性,并生成一串随机数的密码,并用证书中提供的公钥加密。 (4)网站使用自己的私钥将信息...

    tomcat_连接池数据库密码加密解密方法

    其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件(如Tomcat的`server.xml`)中时,这些敏感信息容易被泄露,从而构成安全隐患。因此,实现...

    Tomcat 配置文件数据库密码加密

    Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...

    Tomcat中实现https安全连接与SSL配置

    https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置

    tomcat 配置ssl加密通讯

    tomcat 配置ssl加密通讯tomcat 配置ssl加密通讯tomcat 配置ssl加密通讯

    tomcat支持https配置

    标题中的“Tomcat支持HTTPS配置”是指在Apache Tomcat服务器上启用安全套接层(SSL)协议,以提供加密通信和身份验证。这通常涉及到在Web应用中使用HTTPS(HTTP over SSL/TLS)协议,以保护用户的敏感信息,如登录...

    springboot内置tomcat与外部tomcat配置https访问及http自动转向https

    - `keyalg`:生成证书的算法名称,通常选择 RSA,这是一种非对称加密算法。 - `keysize`:证书密钥的长度,这里设置为 2048 位。 - `keystore`:生成的证书文件的存储路径。 - `validity`:证书的有效期,单位是...

    tomcat 配置https

    tomcat 配置https 详情, tomcat 配置http 强制跳转到https

    tomcat禁用RC4的方法

    编缉$CATALINA_HOEM/conf/server.xml配置文件,找到https端口配置处,修改如下: 复制代码 maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" ssl...

    idea中Tomcat配置遇到的错误.docx

    在 IDEA 中创建 Maven 项目时,可能会遇到 Tomcat 配置错误的问题,本文将详细介绍 Tomcat 配置遇到的错误、错误原因、解决方案,并讨论 Maven 项目的创建、版本选择、Maven 的 Tomcat 配置等相关知识点。...

    SSL/TLS 检测工具以及 tomcat 正向加密配置例子

    本资源包含一个 openssl 工具安装包 Win32OpenSSL-1_1_0c.exe,一个 tomcat 进行配置 ssl 证书、完全 TLS v1.2、完全正向加密的 server.xml、startup.bat 配置文件。关于tomcat 进行配置 ssl 证书、完全 TLS v1.2、...

    解决tomcat配置ssl错误的解决办法

    在 Tomcat 服务器中配置 SSL 加密连接是非常重要的,然而在 Tomcat 6.0.33 版本中,默认启用了 APR(APR 是通过 JNI 访问的可移植库,可以提高 Tomcat 的性能和伸缩性),这使得传统的 SSL 配置方式无法使用。...

    tomcat及其配置文件

    因此,在安装和配置Tomcat之前,首先需要确保系统上已经安装了与Tomcat版本兼容的JDK。 Tomcat的核心配置文件之一是`server.xml`,这个文件位于Tomcat的`conf`目录下,它是Tomcat服务器的全局配置文件,定义了...

    Tomcat https访问设置

    Tomcat HTTPS 访问设置 Tomcat HTTPS 配置是指在 Tomcat 服务器上实施 HTTPS 加密传输协议...6. Tomcat 配置:Tomcat 配置 HTTPS 需要生成证书和配置 Tomcat 的 SSL/TLS 设置,可以在 server.xml 文件中添加相关配置。

    tomcat全套配置https协议

    本教程将详细讲解如何配置Tomcat以支持HTTPS协议,包括生成证书、配置端口以及强制所有HTTP请求转换为HTTPS。 首先,我们需要了解HTTPS的核心概念:SSL/TLS证书。这个证书由权威的证书颁发机构(CA)签发,包含公钥...

    使用Tomcat配置域名

    配置域名在Tomcat中是将一个特定的URL与部署在服务器上的应用关联起来的过程,这对于多站点托管或者为不同项目提供独立访问入口至关重要。下面将详细解释如何使用Tomcat配置域名。 首先,我们需要理解域名配置的...

Global site tag (gtag.js) - Google Analytics