Tomcat配置自签SSL

Tomcat配置自签SSL

1. 准备证书密钥存储库

Tomcat 目前只能操作 JKSPKCS11PKCS12 格式的密钥存储库。JKS 是 Java 标准的“Java 密钥存储库”格式,是通过 keytool 命令行工具创建的。该工具包含在 JDK 中。PKCS12 格式一种互联网标准,可以通过 OpenSSL 和 Microsoft 的 Key-Manager 来。

密钥存储库中的每一项都通过一个别名字符串来标识。尽管许多密码存储库实现都在处理别名时不区分大小写,但区分大小写的实现也是允许的。比如,PKCS11 规范需要别名是区分大小写的。为了避免别名大小写敏感的问题,不建议使用只有大小写不同的别名。

为了将现有的证书导入 JKS 密码存储库,请查阅关于 keytool 的相关文档(位于 JDK 文档包里)。注意,OpenSSL 经常会在密码前加上易于理解的注释,但 keytool 并不支持这一点。所以如果证书里的密码数据前面有注释的话,在利用 keytool 导入证书前,一定要清除它们。

下面这个实例展示的是如何利用终端命令行,从零开始创建一个新的 JKS 密码存储库,该密码库包含一个自签名的证书。

Windows:

"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA

Unix:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

(RSA 算法应该作为首选的安全算法,这同样也能保证与其他服务器和组件的大体的兼容性。)

该命令将在用户的主目录下创建一个新文件:.keystore。要想指定一个不同的位置或文件名,可以在上述的 keytool命令上添加 -keystore 参数,后跟到达 keystore 文件的完整路径名。你都需要把这个新位置指定到 server.xml 配置文件上,见后文介绍。例如:

Windows:

"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
  -keystore \path\to\my\keystore

Unix:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  
  -keystore /path/to/my/keystore     

执行该命令后,首先会提示你提供 keystore 的密码。Tomcat 默认使用的密码是 changeit(全部字母都小写),当然你可以指定一个自定义密码(如果你愿意)。同样,你也需要将这个自定义密码在 server.xml 配置文件内进行指定,稍后再予以详述。

接下来会提示关于证书的一般信息,比如组织、联系人名称,等等。当用户试图在你的应用中访问一个安全页面时,该信息会显示给用户,所以一定要确保所提供的信息与用户所期望看到的内容保持一致。

最后,还需要输入密钥密码(key password),这个密码是这一证书(而不是存储在同一密码存储库文件中的其他证书)的专有密码。keytool 提示会告诉你,如果按下回车键,则自动使用密码存储库 keystore 的密码(建议如此操作)。当然,除了这个密码,你也可以自定义自己的密码。如果选择自定义密码,那么不要忘了在 server.xml 配置文件中指定这一密码。

如果操作全部正常,我们现在就会得到一个服务器能使用的有证书的密码存储库文件。

2. 编辑 Tomcat 配置文件

为了配置使用 JSSE 的 SSL 连接器,你可能需要清除注释并按照如下的方式来编辑它。



一定要确保对所使用的连接器采用正确的属性。BIO、NIO 以及 NIO2 连接器都使用 JSSE,然而APR以及原生的连接器则使用 APR。

如果在这里,你更改了端口号,那么也应该在 非 SSL 连接器(指的是HTTP和AJP的两个链接器)的 redirectPort 属性值。从而使 Tomcat 能够根据 Servlet 规范,自动对访问带有安全限制(指定需要 SSL)页面的用户进行重定向。

配置完全部信息后,你应该像往常一样,重新启动 Tomcat,从而能够利用 SSL 来访问任何 Tomcat 所支持的 Web 应用了。比如:

https://localhost:8443/

你可能感兴趣的:(Tomcat配置自签SSL)