3.3. 指定应用程序的 Own 证书
3.3.1. 为 HTTPS 部署 Own 证书
概述
使用 HTTPS 传输时使用 XML 配置文件部署应用程序的证书。
流程
要为 HTTPS 传输部署应用程序自己的证书,请执行以下步骤:
获取 Java 密钥存储格式 CertName
.jks
的应用程序证书。有关如何以 Java 密钥存储格式创建证书的说明,请参阅 第 2.5.3 节 “使用 CA 在 Java 密钥存储中创建签名证书”。注意一些 HTTPS 客户端(例如,Web 浏览器)执行 URL 完整性检查,这需要证书的身份与部署服务器的主机名匹配。详情请查看 第 2.4 节 “对 HTTPS 证书进行特殊要求”。
将证书的密钥存储 CertName
.jks
复制到部署主机上的证书目录中;例如,X509Deploy/certs
。证书目录应该是只能由管理员和其它特权用户写入的安全目录。
编辑相关的 XML 配置文件,以指定证书密钥存储 CertName
.jks
的位置。您必须在相关 HTTPS 端口配置中包含sec:keyManagers
元素。例如,您可以配置客户端端口,如下所示:
<http:conduit id="{Namespace}PortName.http-conduit"> <http:tlsClientParameters> ... <sec:keyManagers keyPassword="CertPassword"> <sec:keyStore type="JKS" password="KeystorePassword" file="certs/CertName.jks"/> </sec:keyManagers> ... </http:tlsClientParameters> </http:conduit>
其中
keyPassword
属性指定解密证书私钥(即 CertPassword)所需的密码,即type
属性指定信任存储使用 JKS 密钥存储实施,password
属性指定访问 CertName.jks
密钥存储(即 KeystorePassword)所需的密码。配置服务器端口,如下所示:
<http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:keyManagers keyPassword="CertPassword"> <sec:keyStore type="JKS" password="KeystorePassword" file="certs/CertName.jks"/> </sec:keyManagers> ... </http:tlsServerParameters> </http:destination>
重要您必须将 secureSocketProtocol 设置为服务器端的
TLSv1
,以便防止 Poodle 漏洞(CVE-2014-3566)警告包含应用程序证书的目录(例如,X509Deploy
/certs/
)应为安全目录(即,只能由管理员读取和可写入)。警告包含 XML 配置文件的目录应该是一个安全目录(即,只能由管理员读取和可写入),因为配置文件以纯文本中包含密码。