我们有一个配置了SSL证书并启用Xcode的osx服务器。 在将OSX Server更新到3.2.1和Xcode 6.0.1之前,一切正常。
我们遇到的问题是,当集成完成后,我们点击设备上的安装按钮,它会尝试下载但是无声地失败。设备日志打印:
Sep 22 13:32:29 somePhone itunesstored [84]:无法加载 下载带有基础错误的清单:错误域= NSURLErrorDomain Code = -1001“无法连接到buildserver.com”UserInfo = 0x14f74dfe0 {NSUnderlyingError = 0x14f6e8330“请求超时。”, NSErrorFailingURLStringKey = https://buildserver.com:20343/api/integrations/fc9e3c6ed7d80506e9e8e37b0d06a905/87785234-f589-4230-9c0c-055f656b28a6/install_manifest.plist, NSErrorFailingURLKey = https://buildserver.com:20343/api/integrations/fc9e3c6ed7d80506e9e8e37b0d06a905/87785234-f589-4230-9c0c-055f656b28a6/install_manifest.plist, _kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 60,NSLocalizedDescription =无法连接到buildserver.com}
当我检查端口20343时,来自OSX Server的有效ssl证书被证书签署了:Xcode Server Root Certificate Authority,它似乎是自签名的。
在旧版本的osx服务器中,端口20343不存在,因为plist文件在与站点其余部分相同的端口下提供。服务器上侦听端口20343的信息。
sudo lsof -i | grep "20343"
Password:
node 65 _xcsd 15u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29118 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29120 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29121 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29122 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29123 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29124 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 29125 _xcsd 16u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
node 32397 _xcsd 17u IPv4 0x73c2c4b0fa77e271 0t0 TCP *:20343 (LISTEN)
这似乎是osx服务器和xcode机器人的一个错误。有没有人有我们如何在我们的设备上下载ipa文件的解决方案?
答案 0 :(得分:4)
这里的问题相同。
最初开箱即用的Xcode Server解决方案有效,任何设备都可以安装Xcode bot生成的.ipa。一两天后它突然断了,没有任何设备可以下载了,只显示:
无法连接到 www.example.com
跟踪我的iPhone上的日志我还可以看到设备尝试连接到https://www.example.com:20343/api/integrations。这个Xcode Web服务显然使用自签名的 Xcode Server Root Authority 证书(而不是OS X Server管理应用程序中选择的证书),因为任何需要访问此Web服务请求的客户端都被错误地签名。
post on the Apple Developer Forums引导我到这里的Xcode Server Apache配置(谢谢 Paul Verity ):
/Library/Developer/XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/httpd_xcs.conf
或在OS X Server 4.1.5中:
/Library/Developer/XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/xcs/httpd_xcs.conf
包含通过常规Xcode Server网站公开Web服务的部分:
<IfModule mod_proxy.c>
ProxyPass /xcode/api https://127.0.0.1:20343/api retry=0 timeout=30
ProxyPassReverse /xcode/api https://127.0.0.1:20343/api
ProxyPass /xcode/socketio http://127.0.0.1:20300 retry=0 timeout=30
ProxyPassReverse /xcode/socketio http://127.0.0.1:20300
</IfModule>
有趣的是/ xcode / api / requests使用正确的证书进行签名,因此被任何客户接受。 (您可以通过在服务器的URL之后添加/ xcode / api / integrate来访问您的Xcode服务器来测试它。这只是一个JSON Web服务。如果您的服务器证书是由有效的权限签署的,它将被接受没有任何问题。)
这导致我的两步解决方案(假设您的服务器位于路由器/防火墙后面):
<强> 1。将公共TCP端口20300,20343重定向到防火墙/路由器中的专用TCP端口443 这样,Web服务请求被转发到使用设备自动接受的正确证书的Xcode服务器。 Xcode还使用端口20344&amp; 20345,但保留其他连接。注意:如果您的OS X服务器管理Apple路由器并在&#34; Public Services&#34;下重新切换XCode,则可以覆盖这些更改。
<强> 2。代理/ api和/ socketio请求到本地webservice 服务器不知道/ api所以将以下行添加到httpd_xcs.conf中的mod_proxy.c部分:
ProxyPass /api https://127.0.0.1:20343/api retry=0 timeout=30
ProxyPassReverse /api https://127.0.0.1:20343/api
ProxyPass /socketio http://127.0.0.1:20300 retry=0 timeout=30
ProxyPassReverse /socketio http://127.0.0.1:20300
最后的想法/说明:
我不确定我们是否应该将Web服务视为使用自签名证书的错误。苹果提供错误的配置文件可能也是一个问题。也许在ProxyPass线上剥离/ xcode部分而不是添加它们就足够了。
答案 1 :(得分:1)
如果在OS X Server上安装了SSL证书,则在更新OS X后出现此问题。通过在服务器应用程序中重新添加p12证书来修复它 - &gt;证书,然后重新启动。证书可以从钥匙串应用程序导入。
答案 2 :(得分:0)
我在两个不同的Xcode Server安装上遇到了同样的问题。
在第一次安装时,Xcode Server位于防火墙/代理之后。所以端口20343根本无法到达。我通过将https://externalname.com:20343代理到https://internal.ip.address.here:20343
来解决这个问题这是我用过的nginx配置:
server {
listen 20343;
server_name xcode.foo.com;
access_log /var/log/nginx/xcode.access.log;
error_log /var/log/nginx/xcode.error.log;
ssl on;
ssl_certificate /root/foo_com/foo_com.crt;
ssl_certificate_key /root/foo_com/foo_com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TlSv1.2;
ssl_ciphers ALL:!ADH:!aNULL:!PSK:!MD5:!AES:!EXPORT:+HIGH:!MEDIUM:!LOW:!SSLv2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:syncserver:4m;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_read_timeout 120;
proxy_connect_timeout 10;
proxy_pass https://192.168.0.8:20343;
}
}
在第二次安装时,我的Xcode服务器在完全公共IP上,问题实际上是不同的:由于某种原因,我的设备没有正确接受Xcode Server用于运行的Node.js服务器的根证书港口20343。
您可以在此处找到针对该案例的解决方案:Xcode bot install link request time out