Xcode 9附带的Xcode Server现在可以自动为服务器和客户端之间的通信生成SSL证书。它在与Xcode Server REST API通信时也使用此证书。有没有办法指定或替换自动生成的密钥并使用来自可信第三方的证书(如LetsEncrypt)?
位于
的apache配置文件/Library/Developer/XcodeServer/Configuration/httpd_os_xcs.conf
包含以下信息:
Listen 443
<VirtualHost *:443>
# Xcode Server uses its own self-signed certificates
# only if no other SSL configurations for Apache have been found
<IfModule !ssl_module>
LoadModule ssl_module libexec/apache2/mod_ssl.so
SSLEngine on
SSLCertificateFile /Library/Developer/XcodeServer/Certificates/apache.crt
SSLCertificateKeyFile /Library/Developer/XcodeServer/Certificates/apache.key
</IfModule>
[...]
<IfModule mod_proxy.c>
SSLProxyEngine On
SSLProxyCheckPeerCN Off
ProxyPass /xcode/internal/api https://127.0.0.1:20343/api retry=0 timeout=30
ProxyPassReverse /xcode/internal/api https://127.0.0.1:20343/api
ProxyPass /xcode/internal/socket.io https://127.0.0.1:20343/socket.io retry=0 timeout=30
ProxyPassReverse /xcode/internal/socket.io https://127.0.0.1:20343/socket.io
</IfModule>
[...]
</VirtualHost>
我相信证书也是
中的apache.keychain文件的一部分/Library/Developer/XcodeServer/Keychains/apache.keychain
但我还没有能够验证这一点。
每次在Xcode中启动Xcode Server服务时,都会覆盖apache。{crt / key}文件以及httpd_os_xcs.conf文件,因此简单地替换/修改这些文件似乎不是选项。
我能看到的唯一前进方法是按照http_os_xcs.conf文件中的建议实现其他一些SSL配置,但我似乎无法使其工作。
非常感谢任何建议或解决方案。
答案 0 :(得分:0)
这是在macOS Mojave(10.14)上对我有用的。
这些步骤可以通过其他方式完成,但是最初我想使用“祝福”的macOS方式,然后问题就开始了:)
我想直接由系统Apache(使用https://example.com/xcode页)直接使用此证书,但是缺少文档,我发现的唯一是this migration guide 他们谈论的是mod_secure_transport,应该使用它代替mod_ssl。 本指南假定已对其进行了配置,但是默认的Mojave Apache配置(位于/ etc / apache2中)中不存在mod_secure_transport。
因此,让我们以老式的方式手动进行操作:
将您的私钥转换为Apache期望的格式:
openssl pkcs12 -in exported_private_key.p12 -nodes -out server.key -nocerts
将server.key复制到/etc/apache2/server.key
在/etc/apache2/httpd.conf中:
取消注释这些行:
LoadModule ssl_module libexec/apache2/mod_ssl.so
...
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
找到“ IfModule ssl_module”部分并添加:
SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
测试配置:
sudo apachectl configtest
重新启动:
sudo apachectl restart
如果一切都很好,就可以使用了,您可以在https://example.com/xcode
观察结果