我目前正在开展一个项目,以自动将文件签入到 TeamForge/Collab.net 托管的 Subversion 存储库中。我正在使用 SVNKit 来处理这个程序和存储库之间的交互。这是我用于身份验证的相关 Java 部分:
SVNURL url = SVNURL.parseURIEncoded("https://blah.collab.net/svn/repos");
ISVNAuthenticationManager mAuthManager = new BasicAuthenticationManager(new SVNAuthentication[]{
SVNSSLAuthentication.newInstance(new File(certFilePath), certFilePassPhrase, true, url, false),
SVNPasswordAuthentication.newInstance(login, passCharArray, false, url, false);
});
我使用以下 OpenSSL 命令生成了自签名证书:
//generating a key and self-signed certificate
openssl req -x509 -sha256 -days 365 -newkey rsa:2048 -keyout private.key -out cert.crt -subj "/CN=svn.example.com"
//extracting public key from cert.crt
openssl x509 -in cert.crt -pubkey -noout
我已将公钥放在我在 TeamForge 上的个人资料下的“授权密钥”选项卡中。在 SVNKit 中,我将 cerFilePath 指定为“path/to/cert.crt”,并将 certFilePassPhrase 指定为与创建自签名证书时使用的相同。
到目前为止,证书身份验证总是失败并退回到登录名/密码,我让用户在运行时手动将该信息输入到控制台中。所以该程序被允许工作,但如果不存储这些用户凭据,我将无法自动化/安排它。
TeamForge 的 SSL 证书的正确配置是什么?我是否正确生成了我的自签名文件?