本文为第三方解决方案或非产品相关操作指南,仅提供给具备自主开发能力的用户使用。
若您的场景方案与文档不完全一致,请移步帆软社区提问:问答
本文仅面向非运维平台部署的工程,对于运维平台部署的工程,请参考:为运维项目开启SSL
1. 概述
启用 HTTPS 协议需要使用有效的 SSL 证书,证书中包含的身份验证信息可帮助用户进行加密通信。
在单点登录认证系统中,证书是很重要的一把钥匙,客户端与服务器的交互安全靠的就是证书。
本文仅介绍CentOS系统下Tomcat如何安装SSL证书,以满足HTTPS访问的诉求。其他环境建议咨询你的证书签发机构进行安装。
2. 在Tomcat安装SSL证书
2.1 获取证书
在配置证书前,首先需要申请证书。
用户需自行向 CA 厂商购买证书,证书认证一般都是由 VeriSign、GlobalSign 等国际公认的 CA 机构进行。
注:对于正式环境,不可使用 JDK 自带的 keytool 工具生成证书,会出现不安全提醒,导致工程嵌入第三方平台后无法访问。
2.2 上传证书
1)以管理员身份进入Tomcat安装目录,创建cert文件夹。
2)以管理员身份进入%Tomcat_HOME%/cert文件夹,将证书文件上传到该文件夹。
注1:不同厂商的证书格式不完全相同,不一定和下图文件格式相同。
注2:如有密钥文件,请也同步上传到该位置。
2.3 配置server.xml文件
1)以管理员身份进入%TOMCAT_HOME%/conf文件夹,使用文本编辑器打开server.xml文件。
2)在server.xml文件中,找到以下配置块:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
在该配置块上方添加以下配置块,请根据你的证书地址、证书格式和密码,修改keystoreFile、keystoreType和keystorePass:
keystoreFile 支持填写绝对路径或在 Tomcat 中的相对路径。
Connector port为你后续访问时所占的端口,请确保端口防火墙已开放,可正常访问。 如希望在访问时不添加端口,直接通过域名访问,请使用 HTTPS 的默认端口 443 。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/path/to/your/keystore/file"
keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS" />
注1:不建议直接复制粘贴上文代码,可自行找寻文件中该配置库,去除相关代码注释,并修改证书说明即可。
注2:上文代码示例中,证书格式为.pfx格式。若证书格式为.crt,需要微调代码,示例如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https">
<SSLHostConfig sslProtocol="TLS">
<Certificate certificateFile="/opt/ssl_file/server.crt" certificateKeyFile="/opt/ssl_file/server.key" certificateChainFile="/opt/ssl_file/root.crt"
type="RSA"/>
</SSLHostConfig>
</Connector>
3)保存并关闭server.xml文件
2.4 确认web.xml文件(可选)
如需配置HTTP请求自动跳转HTTPS,可执行本节操作。
1)以管理员身份进入%TOMCAT_HOME%/conf文件夹,使用文本编辑器打开web.xml文件。
2)在web.xml文件中,确认存在以下配置块,并确认<transport-guarantee>标签的值为CONFIDENTIAL即可:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
3)保存并关闭web.xml文件。
2.5 重启Tomcat
请参考 关闭或重启FineReport工程 文档,重启Tomcat服务器,以使配置生效。
2.6 效果预览
使用浏览器访问https://your_domain:port,确保能够成功访问,如果网页地址栏出现小锁标志,表示证书已经安装成功。
your_domain是你的域名或IP地址。
端口为2.3节配置的Connector port。
3. 注意事项
3.1 HTTPS 设置
Tomcat 配置 SSL 证书实现 HTTPS 访问后,若要保证 Websocket 连接正常,需要配置 HTTPS 设置。
请先使用管理员账号登录数据决策系统,查看「管理系统>系统管理>常规」中是否出现 HTTPS 设置项。
不出现:说明 Websocket 连接已正确配置,无需修改。
出现:说明 Websocket 连接未正常配置,请参考文档修改:HTTPS配置WebSocket
3.2 无法远程连接
问题描述
设计器 远程连接 https 工程失败。
报错:invalid keystore format
原因分析
配置的 https 工程,证书格式为 PKCS12 ,但设计器客户端目前仅支持默认格式 jks 。
解决方案
在Tomcat文件夹下面新建一个key文件夹,将jks文件格式的server.keystore放在里面。
远程连接的时候选择key文件夹的server.keystore。