tomcat配置https,单方验证,并自动将http请求转成https

  第一次写博客,希望大家多多支持。如有觉得不对的请大家指正,本博客写来只为自己方便查找。

  使用jdk中自带的keytool生成数字证书。

  第一步:生成密钥文件

  在这之前,让我们看看keytool的帮助吧

    通过win+R输入cmd,然后输入以下命令

    keytool -genkey -help,就会出现如下:

      D:\>keytool -genkey -help
      keytool -genkeypair [OPTION]...

      生成密钥对

      选项:

        -alias <alias> 要处理的条目的别名
        -keyalg <keyalg> 密钥算法名称
        -keysize <keysize> 密钥位大小
        -sigalg <sigalg> 签名算法名称
        -destalias <destalias> 目标别名
        -dname <dname> 唯一判别名
        -startdate <startdate> 证书有效期开始日期/时间
        -ext <value> X.509 扩展
        -validity <valDays> 有效天数
        -keypass <arg> 密钥口令
        -keystore <keystore> 密钥库名称
        -storepass <arg> 密钥库口令
        -storetype <storetype> 密钥库类型
        -providername <providername> 提供方名称
        -providerclass <providerclass> 提供方类名
        -providerarg <arg> 提供方参数
        -providerpath <pathlist> 提供方类路径
        -v 详细输出
        -protected 通过受保护的机制的口令

        使用 "keytool -help" 获取所有可用命令

    这里生成密钥

    keytool -genkey -alias alias -keyalg RSA -keysize 2048 -keypass 123456 -validity 36600 -keystore E:\key\m.jks -storepass 123456

    这里的各个参数就对应上面的帮助吧,就不一一介绍了。

    输入上面命令就会出现如下信息:

      您的名字与姓氏是什么?
      [Unknown]: 这里输入你的ip,若是服务器的话,就输入域名,后面的信息就随便输入即可
      您的组织单位名称是什么?
      [Unknown]: 
      您的组织名称是什么?
      [Unknown]: 
      您所在的城市或区域名称是什么?
      [Unknown]: 
      您所在的省/市/自治区名称是什么?
      [Unknown]: 
      该单位的双字母国家/地区代码是什么?
      [Unknown]: 
      CN=172.168.11.188, OU=x, O=x, L=x, ST=x, C=x是否正确?
      [否]: y  这里输入值是让你确认你上面的信息是否正确,若不正确,除了y的其他都可以。输入之后就会重复上面的操作。

   执行完成之后就可以在e盘下面的key文件夹下生成一个密钥m.jks

  第二步:导出证书

    命令:keytool -export -alias alias -keystore E:\key\m.jks -file E:\key\m.crt -storepass 123456

    执行后会出现如下提示:存储在文件 <E:\key\m.crt> 中的证书

    在这里就可以看到导出的证书m.crt

    

  第三步:客户端导入证书

    命令:

    keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file E:\key\m.crt -alias alias

  执行后

    输入密钥库口令:  这里输入的口令必须是changeit; 输入完成后就会出现如下信息,若%JAVA_HOME%\jre\lib\security\目录下没有cacerts,还要再输入一次changeit;
    所有者: CN=172.168.11.188, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    发布者: CN=172.168.11.188, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown  
    序列号: 402163bd
    有效期开始日期: Fri Feb 24 16:53:06 CST 2017, 截止日期: Tue May 11 16:53:06 CST 2117
    证书指纹:
    MD5: A8:ED:C3:13:24:F5:D9:7E:E1:AF:B0:BB:B4:8C:EA:EA
    SHA1: 6B:69:79:1A:B0:AD:46:E2:98:74:FF:79:22:E6:A4:7B:7F:4E:9D:19
    SHA256: B3:23:F5:DD:6E:42:A4:14:CF:6A:9D:83:43:7A:9E:FA:B1:69:24:E5:15:DD:A5:97:BB:94:A5:A9:29:8D:2D:BE
    签名算法名称: SHA256withRSA
    版本: 3

    扩展:

    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 62 42 1F 16 B0 5C 94 77 BF 34 D3 C5 62 D3 D0 CB bB...\.w.4..b...
    0010: CE A1 94 D1 ....  
    ]
    ]

    是否信任此证书? [否]: y   输入y即可
    证书已添加到密钥库中

    第四步:

      找到tomcat目录下的conf文件下的server.xml;

    找到

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

在这个后面加入

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\m.jks"   这里是你生成密钥的路径
keystorePass="123456"   这里是你生成密钥时的密码
keyAlias="alias"   这里是你设置的别名(记得保持一致)
keystoreType="JKS" />

到这里就配置完了,然后启动tomcat,输入https://您的名字与姓氏:8443/就会出现如下界面

点击继续浏览此网站就会出现tomcat首页

接下来配置http自动转为https:

1.<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\selfissue.jks"
keystorePass="123654"
keyAlias="selfissue"
keystoreType="JKS" />
修改为
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\selfissue.jks"
keystorePass="123654"
keyAlias="selfissue"
keystoreType="JKS" />
2.将<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改为<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

3.<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
4.你apache中的/conf/web.xml,在该文件</web-app>前面面加上这样一段:
<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>

回车出现如下界面

时间: 2024-08-03 19:22:05

tomcat配置https,单方验证,并自动将http请求转成https的相关文章

https 是什么意思?怎么把http改成https?

http叫超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,数据可以通过抓包工具捕获到,因此在interner上,有些比较重要的站点的http服务器需要使用PKI(公钥基础结构)技术来对数据加密!这也就是https了: https叫安全的超文本传输协议,使用TCP端口443,他的数据会用PKI中的公钥进行加密,这样抓包工具捕获到的数据包也没有办法看包中的内容,安全性大大提高,要解密数据的话就要用到PKI中的私钥.所以一些安全性比较高的网站如:网上银行,电子商务网站都需要用https

Linux/Centos Tomcat 配置日志切分以及脚本自动清理

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成.由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范.因为Tomcat技术先进,性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器. Tomca

利用meta标签将http请求换成https请求

最近网站升级为https之后,为了防止一些http文件没有修改而引起的问题,可以加一个meta标签: <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 说明:有一定兼容性问题. 原文地址:https://www.cnblogs.com/leaf930814/p/8961778.html

Tomcat配置SSL(8443

创建证书 证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书:本教程由于是演示所以就自己用JDK自带的keytool工具生成证书:如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,中文官方网站:http://www.verisign.com/cn/ 用JDK自带的keytool工具生成证书: keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey

Tomcat配置https及访问http自动跳转至https

https介绍:   HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系.用于安全的HTTP数据传输.https:URL表明它使用了HTTPS,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(

Tomcat配置HTTPS方式生成安全证书

原文:http://www.cnblogs.com/visec479/p/4152827.html 在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证.并实现批量生成证书 系统需求:JDK 5.0Tomcat 6.0.16启动命令行:第一步:为服务器生成证书 使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者"192.168.1.1",keystore文件存放在"D:

tomcat配置https(单向),实现简单demo

进入jdk的安装目录,找到bin目录: 2.输入命令: keytool -v -genkey -alias tomcat -keyalg RSA -keystore D:\360downloads\tomcat7.0\tomcat.keystore  -validity 36500 解释:1.默认情况下证书会保存90天,所以通过-validity 36500来增加证书的有效时间为100年: 2.D:\360downloads\tomcat7.0\tomcat.keystore 为保存证书的路径和

https原理及tomcat配置https方法

一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS.SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,

[从零开始搭网站六]为域名申请免费SSL证书(https),并为Tomcat配置https域名所用的多SSL证书

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 由于国内的网络环境比较恶劣,运营商流量劫持的情况比较严重,一般表现为别人打开你的网站的时候会弹一些莫名其妙的广告...更过分的会跳转至别的网站. 那么为了解决这种情况,那么我们就要申请SSL证书,并且配置服务器. 并且,我准备再学习并写一个微信小程序,而微信小程序所有接口都需要走https,那么全线https就势在必行. 目前免费https其实有很多家,我之前出过一个教程是 用Let's Encrypt实现Https(Windows环境+To