iServer 和 iEdge 均支持将经过 https 加密后的第三方 Web 服务,发布为 WMS 、WMTS 、 REST 以及 WFS 等服务类型,并且 iServer Web 打印服务支持打印经过 https 加密后的 Web 服务。iServer 和 iEdge 代理发布和使用 https 服务时会遇到以下两种情况:
情形一:https 服务器的 SSL 证书经过权威机构认证
如果 https 服务器使用的 SSL 证书经过权威机构认证,由于 java 中已经内置了相应的客户端证书,因此 iServer 和 iEdge 不需要做任何配置即可代理发布和使用第三方 https 服务。
情形二:https 服务器的 SSL 证书未经过权威机构认证
如果 https 服务器使用的 SSL 证书未经过权威机构认证,这样 java 中就缺少了验证此 https 服务器身份的客户端证书,所以需要先在 https 服务器中生成客户端证书,然后将生成的客户端证书提供给 iServer 和 iEdge 使用。在 iServer(iEdge 同 iServer)中只需正确导入客户端证书和填写 https 服务地址,即可成功发布和使用经过 https 加密后的第三方 Web 服务。
客户端证书生成步骤
- 在 https 服务器上设置 JAVA 环境变量,即将 jdk 的 bin 目录加入到系统的 PATH 环境变量中。
- 在 https 服务器的任意位置打开命令行窗口,输入命令生成服务器端证书,示例如下:
keytool -genkey -alias tomcat -keyalg RSA -dname "cn=supermap.iserver.org,ou=localhost,o=localhost,l=china,st=sichuan,c=cn" -keystore D:\key.keystore
- alias:用于指定服务器端证书的别名。
- keyalg:非对称密钥算法,也可以改为 keytool 支持的其他密钥算法。
- dname:用于设置生成的服务器端证书的基本信息,其中 cn 指的是 https 服务器对应的域名,这里为 supermap.iserver.org。
- keystore:指定生成的服务器端证书的路径与名称,这里为 D:\key.keystore 。
- 导出公钥证书,在 https 服务器的命令行窗口输入如下命令:
keytool -export -alias tomcat -keystore D:\key.keystore -rfc -file D:/supermap.cer
- alias:服务器端证书的别名。
- keystore:服务器端证书的路径与名称。
- file:指定生成的公钥证书的路径与名称,这里为 D:/supermap.cer 。
- 公钥证书的导入以及客户端证书的生成,在 https 服务器的命令行窗口中输入如下命令,即可生成客户端证书 key.truststore ,供 iServer 使用。
keytool -import -alias tomcat -file D:/supermap.cer -keystore D:/key.truststore
- alias:服务器端证书的别名。
- file:公钥证书的路径与名称。
- keystore:指定生成的客户端证书的路径与名称,这里为 D:/key.truststore 。
客户端证书配置方式
在 iServer 服务器上,修改 %SuperMap iServer_HOME%/bin 目录下的 catalina.bat 文件,即将客户端证书(key.truststore)添加到 iServer 中,用于验证 https 服务器身份。具体修改内容如下:
修改前如下所示:
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1536m -XX:MaxPermSize=192m -Xss512k
修改后如下所示:
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m -XX:MaxPermSize=192m -Xss512k -Djavax.net.ssl.trustStore=D:/key.truststore -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=123456
- Djavax.net.ssl.trustStore:用于指定客户端证书的路径与名称。
- Djavax.net.ssl.trustStorePassword:客户端证书对应的密码。
https 服务地址填写方式
在 iServer 和 iEdge 中填写待转发的 https 服务地址时,https 服务地址要用域名形式(即 https 服务器对应的域名),如 https://supermap.iserver.org:8443/iserver/services/map-china400/rest 。