发布和使用 HTTPS 加密后的 Web 服务 |
iServer 和 iEdge 均支持将经过 https 加密后的第三方 Web 服务,发布为 WMS 、WMTS 、 REST 以及 WFS 等服务类型,并且 iServer Web 打印服务支持打印经过 https 加密后的 Web 服务。iServer 和 iEdge 代理发布和使用 https 服务时会遇到以下两种情况:
如果 https 服务器使用的 SSL 证书经过权威机构认证,由于 java 中已经内置了相应的客户端证书,因此 iServer 和 iEdge 不需要做任何配置即可代理发布和使用第三方 https 服务。
如果 https 服务器使用的 SSL 证书未经过权威机构认证,这样 java 中就缺少了验证此 https 服务器身份的客户端证书,所以需要先在 https 服务器中生成客户端证书,然后将生成的客户端证书提供给 iServer 和 iEdge 使用。在 iServer(iEdge 同 iServer)中只需正确导入客户端证书和填写 https 服务地址,即可成功发布和使用经过 https 加密后的第三方 Web 服务。
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
keytool -export -alias tomcat -keystore D:\key.keystore -rfc -file D:/supermap.cer
keytool -import -alias tomcat -file D:/supermap.cer -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
在 iServer 和 iEdge 中填写待转发的 https 服务地址时,https 服务地址要用域名形式(即 https 服务器对应的域名),如 https://supermap.iserver.org:8443/iserver/services/map-china400/rest 。