• Tomcat (1) —— Mac下配置Tomcat Https/SSL


    Tomcat (1) —— Mac下配置Tomcat Https/SSL


    tomcat版本: tomcat-8.0.29

    jdk版本: jdk1.8.0_65

    参考来源:

    SSL/TLS Configuration HOW-TO

    【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例

    完美配置Tomcat的HTTPS

    两步搞定 Tomcat 下启用 https:// 访问

    tomcat下配置https环境

    安装与配置

    首先

    参照博文配置好单个Tomcat实例作为https的目标测试服务环境。"./servers/cluster/tomcat/node-c"

    【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例

    配置证书

    1. 创建证书

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

    先查看当前JAVA_HOME的jdk版本:

    $ java -version
    java version "1.8.0_65"
    Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
    
    * 注意以下提示输入服务器域名的时候不能用IP地址

    用JDK自带的keytool工具生成证书:

    $ keytool -genkey -alias hoau -keyalg RSA -keystore /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey
    输入密钥库口令:
    再次输入新口令:
    您的名字与姓氏是什么?
    	[Unknown]:  sso.hoau.com
    您的组织单位名称是什么?
    	[Unknown]:  hoau.com
    您的组织名称是什么?
    	[Unknown]:  sso
    您所在的城市或区域名称是什么?
    	[Unknown]:  Shanghai
    您所在的省/市/自治区名称是什么?
    	[Unknown]:  Shanghai
    该单位的双字母国家/地区代码是什么?
    	[Unknown]:  CN
    CN=sso.hoau.com, OU=hoau.com, O=sso, L=Shanghai, ST=Shanghai, C=CN是否正确?
    [否]:  y
    
    输入 <hoau> 的密钥口令
    	(如果和密钥库口令相同, 按回车):
    

    * 关于以上问题参数的说明
    • 单点登陆服务器的域名:

        您的名字与姓氏是什么?
        	[Unknown]:  sso.hoau.com
      
    • 公司的名称:

        您的组织单位名称是什么?
        	[Unknown]:  hoau.com
      
    • 单点登陆服务名称:

        您的组织名称是什么?
        	[Unknown]:  sso
      
    • 所在地及国别:

        您所在的城市或区域名称是什么?
        	[Unknown]:  Shanghai
        您所在的省/市/自治区名称是什么?
        	[Unknown]:  Shanghai
        该单位的双字母国家/地区代码是什么?
        	[Unknown]:  CN
      
    • 最后输入客户端所用密钥(Hoau123):

        输入 <hoau> 的密钥口令
        (如果和密钥库口令相同, 按回车):
      

    如果出现如下错误:

    keytool 错误: java.io.FileNotFoundException: /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey (No such file or directory)
    

    这可能是因为目标路径上文件不存在。

    如果出现如下错误:

    keytool 错误: java.io.FileNotFoundException: /Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey (Is a directory)
    

    这是因为hoaukey是文件目录,将其删除即可。

    2. 导出证书

    :tomcat Richard$ keytool -export -file ./keys/hoau.crt -alias hoau -keystore ./keys/hoaukey
    输入密钥库口令:
    	存储在文件 <./keys/hoau.crt> 中的证书
    

    3. 为客户端的JVM导入证书

    $ sudo keytool -import -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/security/cacerts -file ./keys/hoau.crt
    

    运行结果(此处密钥库口令与之前生成的口令相同)

    输入密钥库口令:
    再次输入新口令:
    所有者: CN=sso.hoau.com, OU=hoau.com, O=sso, L=Shanghai, ST=Shanghai, C=CN
    发布者: CN=sso.hoau.com, OU=hoau.com, O=sso, L=Shanghai, ST=Shanghai, C=CN
    序列号: 54668c91
    有效期开始日期: Thu Dec 10 10:30:57 CST 2015, 截止日期: Wed Mar 09 10:30:57 CST 2016
    证书指纹:
    	 MD5: 13:40:A0:58:44:73:95:C5:DD:5B:3F:A9:75:07:EF:9C
    	 SHA1: 31:06:8C:A7:68:34:BE:A1:28:11:DE:27:3E:62:58:58:D7:D5:C1:56
     	SHA256: AC:6F:B2:DE:AC:69:D0:D6:BF:E6:A6:CD:BE:DF:EE:EA:79:17:FA:61:20:8D:06:24:E1:4B:00:55:5F:D9:65:BE
     	签名算法名称: SHA256withRSA
     	版本: 3
    
    扩展:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    	SubjectKeyIdentifier [
    		KeyIdentifier [
    			0000: 22 7B 1A C9 78 B8 F8 B3   0B 3A F5 30 DF A9 D7 B9  "...x....:.0....
    			0010: FB E4 32 3D                                        ..2=
    	]
    ]
    
    是否信任此证书? [否]:  y
    证书已添加到密钥库中	
    

    可能会出现错误

    keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect
    

    可以通过查看路径设置是否正确或查看jdk下security目录下的cacerts文件是否存在,如果存在可以通过rename的方式,将其改名。

    配置服务器

    打开"./tomcat/node-c/conf/server.xml"

    将原来被注释掉的SSL相关配置修改成:

    <Connector port="8433" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="/Users/Richard/Documents/Dev/servers/cluster/tomcat/keys/hoaukey" keystorePass="Hoau123"/>
    
    *注意,此处我们将SSL的端口从"8443"修改成了"8433"

    配置系统环境

    在创建证书证书的时候,我们指定的服务器域名为sso.hoau.com。为了能使本地浏览器
    通过域名能正常访问,我们需要修改增加host配置

    127.0.0.1  sso.hoau.com
    

    运行

    执行命令

    :node-c Richard$ ./bin/startup.sh
    

    提示错误

    -bash: ./bin/startup.sh: Permission denied
    

    运行命令

    sudo chmod +x ./bin/*.sh
    

    再启动

    $ ./bin/startup.sh
    

    停止命令为

    $ ./bin/startup.sh
    
    • *此时可能会在catalina的log中出现如下错误

        10-Dec-2015 11:03:35.473 SEVERE [main] org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore Failed to load keystore type JKS with path /Users/Richard/.keystore due to /Users/Richard/.keystore (No such file or directory)
        java.io.FileNotFoundException: /Users/Richard/.keystore (No such file or directory)
        	at java.io.FileInputStream.open0(Native Method)
        	at java.io.FileInputStream.open(FileInputStream.java:195)
        	at java.io.FileInputStream.<init>(FileInputStream.java:138)
        	at java.io.FileInputStream.<init>(FileInputStream.java:93)
      

      可能的原因有两个

      1. 注意SSL配置中的关键字key值都是区分大小写的,比如"keystoreFile"和"keystorePass" 。
      2. 注意确认"keystoreFile"和"keystorePass"相关参数路径的正确性。

    测试

    用浏览器访问https://sso.hoau.com:8433,会出现结果:

    结束

  • 相关阅读:
    php 多进程
    关于TP的RBAC的使用
    谈谈自己对于Auth2.0的见解
    php 写队列
    关于thinkphp中Hook钩子的解析
    JS的闭包
    单链表的查找和取值-1
    shell输入输出重定向
    转-Visual Studio控制台程序输出窗口一闪而过的解决方法
    linux下如何调用不同目录下的.h 库文件
  • 原文地址:https://www.cnblogs.com/richaaaard/p/5035812.html
Copyright © 2020-2023  润新知