-
Notifications
You must be signed in to change notification settings - Fork 18.3k
Closed
Description
- Tested on
go version go1.6 darwin/amd64
andgo version go1.5.3 darwin/amd64
. - OS X Yosemite, OS X El Capitan
- I attempted to connect to a TLS service with a certificate signed by an internal, enterprise certificate authority. The CA certificate was added to the System keychain.
- I expected to be able to connect to the TLS service without any issue as the certificate is signed by a CA I trust.
- The program failed to connect to the TLS service, because the CA certificate that issued the certificate is not installed in the SystemRootCertificates.keychain that Go loads trusted roots from.
On OS X Yosemite, this issue can be mitigated by installing the certificate into SystemRootCertificates.keychain via /usr/bin/security
from the terminal:
sudo security add-trusted-cert -k /System/Library/Keychains/SystemRootCertificates.keychain <certificate>
However, on El Capitan this is no longer possible without turning off security protections enabled by Apple.
execSecurityRoots
should try to load additional certificates from the System keychain located at /Library/Keychains/System.keychain
, and the Login keychain (~/Library/Keychains/login.keychain
).
This bug makes distributing Go clients (especially 3rd-party developed) difficult in organizations with an internal PKI.
aequitas and phinze