因为某些“众所周知”的缘由,Azure中国版使用了国内的WoSign证书——和臭名昭著的CNNIC有的一拼。Apple是不信任WoSign证书的,这也是为何用Mac OS中访问www.azure.cn时提示证书不被信任的缘由。一样,JDK也不待见这货,这就致使在用Java调用Azure中国版API的时候会报“PKIX path building failed”错误。java
因为JDK并不使用Windows操做系统的证书存储,所以虽然Windows是信任WoSign的,但依然须要手工添加WoSign根证书到JDK的可信任证书存储中。ui
到http://www。wosign。com/Root/index.htm下载WoSign根证书(这个域名居然是cnblogs的违禁词...)。spa
添加WoSign根证书到JDK:操作系统
keytool -keystore C:\Java8\jdk1.8.0_92\jre\lib\security\cacerts -importcert -alias WoSign -file C:\Users\hunte\Deskto p\WS_CA1_NEW.cer
命令格式:.net
keytool -keystore [JAVA_HOME目录]\jre\lib\security\cacerts -importcert -alias WoSign -file [WoSign根证书文件位置]
看到相似如下的提示,则表示根证书添加成功。code
若是出现错误,检查一下本机的PATH环境变量中是否包含“%JAVA_HOME%\bin”。另外,JDK和JRE安装时尽可能不要安装到“Program Files”目录,这个目录中的空格常常会引发一些莫名其妙的麻烦。htm
根证书添加成功后,在须要调用Azure中国版API的Java代码以前加入一行:blog
System.setProperty("javax.net.ssl.trustStore","C:\\Java8\\jdk1.8.0_92\\jre\\lib\\security\\cacerts");
这里注意第二个参数要和前文中添加根证书时写的证书存储位置保持一致,在Windows环境中目录分隔的反斜线要转义(\\)。ssl
通过上述步骤后,在Java中调用Azure中国版的API就能够正常工做了。域名