我将尝试分部分回答你的问题,因为它相当广泛。
启用 SSL
要在 Liberty 配置文件中启用 ssl,最简单的方法是在 Eclipse 中使用 WDT(WebSphere Developer Tools)。在Servers 视图中右键单击服务器并选择Utilities > Create SSL Certificate。它将:
- 生成 Selfsign 证书 - 您可以自定义有效期和主题名称
- 存储在
${server.output.dir}/resources/security/key.jks
- 在
Console 视图中,它将输出您需要添加到server.xml 的代码:
<featureManager>
<feature>ssl-1.0</feature>
</featureManager>
<keyStore id="defaultKeyStore" password="{xor}encodedPassword=" />
您可以从命令行从wlp\bin 调用securityUtility 命令执行相同操作:
securityUtility createSSLCertificate --server=myserver --password=mypassword --validity=365
--subject=CN=mycompany,O=myOrg,C=myCountry
修改 server.xml 后,您的 Liberty 已在 9443 上启用 SSL:
https://localhost:9443/
自定义 SSL 证书
不幸的是,Liberty 本身并没有太多的东西。所以这里是你的选择:
- 如上使用
securityUtility - 允许覆盖周期和SN
- 使用JDK自带的keytool,可以进行更多的自定义(名称、密钥长度和算法),例如:
C:\Java\jdk1.7.0_67\bin>keytool -genkeypair -alias myCert -keystore keystore.jks
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: liberty
What is the name of your organizational unit?
[Unknown]: test
What is the name of your organization?
[Unknown]: gas
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=liberty, OU=test, O=gas, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes
Enter key password for <mykey>
(RETURN if same as keystore password):
Re-enter new password:
- 第三方工具,例如,如果您有完整的 WAS,您可以使用 ikeyman 使用向导生成证书。
无论您将使用什么方法来创建新的密钥库和自唱证书,请更新 server.xml 中的 keyStore 定义
重定向到 SSL
默认情况下,任何未配置的应用程序都可以通过 http 和 https 访问。
如果您想强制应用程序使用 SSL,您需要为该应用程序创建/修改web.xml 文件。将以下内容添加到您的web.xml:
<security-constraint>
<display-name>allApp</display-name>
<web-resource-collection>
<web-resource-name>allresources</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
您必须启用应用程序安全性,将以下内容添加到server.xml:
<featureManager>
<feature>appSecurity-2.0</feature>
</featureManager>
你已经完成了。您已为您的服务器启用 SSL 并为给定的应用程序启用重定向。