tomcat设置http自动跳转为https访问

一、生成服务器端证书文件
可以使用Windows系统或者Linux系统
(1)Windows环境
条件:已经安装JDK
步骤:
1、在运行里输入cmd进入命令窗口
2、进入JDK安装目录  如D:/Program Files/Java/jdk1.6.0/bin
3、执行命令   keytool -genkey -alias tomcat -keyalg RSA -keystore E:\tomcat.keystore -validity 36500
参数简要说明:“E:\tomcat.keystore”含义是将证书文件保存在E盘,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
4、在命令行填写必要的参数:
A、输入keystore密码:此处需要输入大于6个字符的字符串
B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
C、“你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
D、输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以
5、完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件
(2)Linux环境
条件:安装了JDK
步骤:
1、进入JDK安装目录  如/root/Oracle/Middleware/jdk160_11/bin
2、执行命令     ./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat.keystore -validity 36500
参数简要说明:“/etc/tomcat.keystore”含义是将证书文件保存在路径/usr/local/下,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
3、在命令行填写必要的参数:
A、Enter keystore password:此处需要输入大于6个字符的字符串
B、“What is your first and last name?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
C、“What is the name of your organizational unit?”、“What is the name of your organization?”、“What is the name of your City or Locality?”、“What is the name of your State or Province?”、“What is the two-letter country code for this unit?”可以按照需要填写也可以不填写直接回车,在系统询问“correct?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
D、Enter key password for <tomcat>,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以
4、 完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件
二、配置TOMCAT服务器
(1)    如果你是在Windows环境中生成证书文件,则需要将生成的证书tomcat.keystore拷贝到Tomcat将要引用的位置,假设tomcat的应用证书的路径是“E:/tomcat.keystore”,则需要将证书文件拷贝到E盘下;
(2)    配置Tomcat,打开tomcat配置文件,如:D:/apache-tomcat-6.0.29/conf/server.xml,修改如下,
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改参数=>
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
 
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"/>
 -->
去掉注释且修改参数=>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456789"/>
注释:标识为淡蓝色的两个参数,分别是证书文件的位置和<tomcat>的主密码,在证书文件生成过程中做了设置
 
<!--
   <Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
-->
修改参数=>
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />
(3) 打开D:/apache-tomcat-6.0.29/conf/web.xml,在该文件</welcome-file-list>后面加上这样一段:
<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> 
三、上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址 “ http:// ” 会自动跳转成为 “https://” 
四、注意事项:
(1)生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”
(2)如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的
五、遗留问题:
(1)如果AC主机不能通过域名查找,必须使用IP,但是这个IP只有在配置后才能确定,这样证书就必须在AC确定IP地址后才能生成
(2)证书文件只能绑定一个IP地址,假设有10.1.25.250 和 192.168.1.250 两个IP地址,在证书生成文件时,如使用了10.1.25.250,通过IE就只能使用10.1.25.250 来访问AC-WEB,192.168.1.250是无法访问AC-WEB的。
<think>好的,用户现在的问题是想要配置强制HTTPS访问网站。我需要根据之前的对话和提供的引用内容来给出解决方案。首先,用户之前询问的是如何绕过宽带提供商的屏蔽,现在转向服务器配置,特别是强制HTTPS。看起来用户可能是一个网站管理员,或者需要在自己的服务器上设置HTTPS重定向。 首先,回顾用户提供的引用,特别是引用[1]、[2]、[4]和[5],这些涉及到Nginx、Tomcat和Apache的配置。用户之前的问题是关于如何让HTTP强制跳转HTTPS,所以需要针对不同的服务器类型提供配置方法。 用户现在明确问如何配置强制HTTPS访问,可能需要具体的步骤和示例。我需要分服务器类型来解答,比如Nginx、Apache、Tomcat,因为不同的服务器有不同的配置方式。根据引用[2],Nginx的配置是通过在80端口的server块中添加301重定向。引用[5]展示了Apache的RewriteRule,而引用[3]提到了Tomcat的redirectPort设置。 需要注意用户是否提到了特定的服务器软件,但问题中没有明确说明,所以应该覆盖主流的服务器类型。同时,用户可能关心如何正确配置SSL证书,并确保重定向有效,避免循环或错误。 另外,用户可能希望了解不同的重定向方法,比如301永久重定向和HSTS,这在引用[4]中提到了HSTS的配置。HSTS可以增强安全性,但需要正确设置,比如添加Strict-Transport-Security头。 还需要注意配置中的常见错误,例如是否正确监听80和443端口,SSL证书路径是否正确,以及重定向语句的位置是否正确。例如,在Nginx中,如果同时有多个server块,需要确保优先级正确,避免冲突。 用户可能还关心验证配置是否生效的方法,比如使用curl检查响应头,或者在线工具检测。此外,提示用户更新SSL证书和考虑兼容性问题,比如旧浏览器是否支持HSTS,也是必要的。 最后,确保回答结构清晰,分点说明每个服务器的配置步骤,并给出示例代码,同时加入注意事项和验证方法,确保用户能够一步步操作。还要生成相关问题,帮助用户进一步解决可能遇到的问题。</think>### 分步指南:强制HTTPS访问的配置方法 --- #### **一、Nginx 配置(主流方案)** **1. 基础重定向配置** 在Nginx的80端口监听块中添加**301永久重定向**,将HTTP请求强制跳转HTTPS: ```nginx server { listen 80; server_name yourdomain.com; # 替换为你的域名 return 301 https://$server_name$request_uri; # 关键代码:301重定向 } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/your/cert.pem; # SSL证书路径 ssl_certificate_key /path/to/your/key.pem; # 私钥路径 # 其他HTTPS配置(如SSL协议、缓存等) } ``` **原理**:当用户访问`http://yourdomain.com`时,Nginx通过`return 301`将请求重定向到`https://yourdomain.com`[^2]。 --- **2. 高级配置(HSTS增强)** 通过**HTTP Strict Transport Security (HSTS)** 强制浏览器仅使用HTTPS,避免中间人攻击: ```nginx server { listen 443 ssl; server_name yourdomain.com; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; # 其他配置... } ``` **作用**: - `max-age=31536000`:HSTS有效期1年 - `includeSubDomains`:覆盖所有子域名 - `preload`:申请加入浏览器HSTS预加载列表[^4] --- #### **二、Apache 配置** **1. 使用`mod_rewrite`模块** 在`.htaccess`或虚拟主机配置中添加以下规则: ```apache RewriteEngine On RewriteCond %{HTTPS} off # 检测是否为HTTP请求 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ``` **验证方法**: - 访问`http://yourdomain.com`,观察地址栏是否自动跳转为`https`[^5]。 --- **2. 虚拟主机分离配置** ```apache <VirtualHost *:80> ServerName yourdomain.com Redirect permanent / https://yourdomain.com/ </VirtualHost> <VirtualHost *:443> ServerName yourdomain.com SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/key.pem # 其他HTTPS配置... </VirtualHost> ``` --- #### **三、Tomcat 配置** 修改`conf/server.xml`文件,设置HTTP连接器自动跳转HTTPS端口: ```xml <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" /> <!-- 关键参数:redirectPort --> <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="/path/to/keystore.jks" keystorePass="your_password" /> ``` **注意**:需提前配置SSL证书到Java Keystore[^3]。 --- #### **四、验证与排查** 1. **检查重定向是否生效** ```bash curl -I http://yourdomain.com # 观察返回状态码是否为301/302 ``` 2. **常见问题** - **重定向循环**:检查SSL证书是否有效,且`listen 443`配置正确。 - **HSTS冲突**:若之前配置过HSTS,需清除浏览器缓存或降低`max-age`测试。 --- #### **五、注意事项** 1. **证书有效性**:确保SSL证书未过期且域名匹配。 2. **混合内容警告**:页面内所有资源(图片、JS/CSS)必须使用HTTPS链接。 3. **兼容性**:HSTS可能被旧版浏览器忽略(如IE < 11)。 --- ### 相关问题 1. 如何为Nginx配置HTTP/2以提升HTTPS性能? 2. 自签名SSL证书与CA签发证书有何区别? 3. 如何通过Let's Encrypt免费获取SSL证书?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值