可能在大多数Java EE项目中,您将拥有具有SSL支持( https )的部分或整个系统,因此浏览器和服务器可以通过安全连接进行通信。 这意味着在处理数据之前,已发送的数据已加密,传输并最终解密。
问题在于,有时官方的“密钥库”仅可用于生产环境,而不能在开发/测试机器中使用。 然后,一个可能的步骤是由团队的一个成员创建一个非官方的“密钥库” ,并将其共享给所有成员,以便每个人都可以使用https在本地进行测试,并且对于测试/ QA环境也是如此。
但是使用这种方法会遇到一个问题,那就是,当您要运行该应用程序时,您会收到一条警告/错误消息,表明证书不受信任。 您可以忍受这一点,但是我们可以做得更好,并通过创建自签名SSL证书来避免这种情况。
在本文中,我们将了解如何使用自签名证书在Apache TomEE (和Tomcat )中创建和启用SSL 。
首先要做的是安装openssl。 此步骤将取决于您的操作系统。 就我而言,我使用Ubuntu 14.04运行。
然后,我们需要使用Triple-DES算法生成1024位RSA私钥并以PEM格式存储。 我将使用{userhome} / certs目录生成所有必需的资源,但是可以毫无问题地对其进行更改。
生成私钥
openssl genrsa -des3 -out server.key 1024
在这里,我们必须引入一个密码,在这个示例中,我将使用apachetomee (请在生产中不要这样做)。
产生企业社会责任
下一步是生成CSR (证书签名请求)。 理想情况下,将生成此文件并将其发送给Thawte或Verisign等证书颁发机构,后者将验证身份。 但是在本例中,我们将使用先前的私钥对CSR进行自签名。
openssl req -new -key server.key -out server.csr
提示之一是“公用名(例如,服务器FQDN或您的姓名)”。 重要的是,要使用SSL保护的服务器的标准域名必须填写此字段。 对于开发机,您可以设置“ localhost”。
现在已经有了私钥和csr,我们可以通过运行以下命令来生成有效期为一年的X.509自签名证书:
生成自签名证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
要在Apache TomEE (和Tomcat)中安装证书,我们需要使用密钥库。 该密钥库是使用keytool命令生成的。 要使用此工具,证书应为PKCS12证书。 因此,我们将使用openssl通过运行以下命令将证书转换为PKCS12格式:
准备Apache TomEE
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name test_server -caname root_ca
我们差不多完成了,现在我们只需要创建密钥库。 与所有其他资源一样,我已使用相同的密码来保护密钥库,这是
阿帕切米 。
keytool -importkeystore -destkeystore keystore.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcalias test_server -destalias test_server
现在,我们在{userhome} / certs中创建了一个keystore.jks文件。
将密钥库安装到Apache TomEE中
在http://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html中描述了将密钥库安装到Apache TomEE (和Tomcat)中的过程。 但总而言之,唯一要做的是打开$ {TOMEE_HOME} /config/server.xml并定义SSL连接器。
<Service name="Catalina"><Connector port="8443" protocol="HTTP/1.1"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"keystoreFile="${user.home}/certs/keystore.jks" keystorePass="apachetomee"clientAuth="false" sslProtocol="TLS" />
</Service>
请注意,在我的案例中,您需要设置密钥库位置{userhome} /certs/keystore.jks以及用于打开名为apachetomee的密钥库的密码。
准备浏览器
在启动服务器之前,我们需要在浏览器中将server.crt添加为有效的Authorities。
在Firefox中: Firefox首选项->高级->查看证书->权限(选项卡),然后导入server.crt文件。
在Chrome中:设置-> HTTPS / SSL->管理证书…->权限(标签),然后导入server.crt文件。
现在,您可以启动Apache TomEE (或Tomcat)了,可以使用https和端口8443导航到任何已部署的应用程序。
就是这样,现在我们可以运行测试(使用Selenium ),而不必担心不受信任的证书警告。
翻译自: https://www.javacodegeeks.com/2015/01/self-signed-certificate-for-apache-tomee-and-tomcat.html