最近,我在https://mycorporateserver.corporation.com/nexus/的公司服务器上配置了一个Nexus存储库。
方式"它始终如一"是我们的应用程序"在服务器上并使用apache httpd来提供页面并使用ldap管理访问。
Nexus配置为匿名访问,https,localhost only(一切正常)。然后,我们使用Apache httpd使用proxypass和reverseproxypass向其他人提供Nexus页面/ URI(根据sonatype&s;文档中的说明)。
问题是httpd配置需要ldap。因此,如果我从Web浏览器点击给定的Nexus URI,浏览器会要求我的公司登录。我使用我的用户名和密码登录,并且可以作为匿名用户查看存储库。
我没有为ldap配置Nexus,Nexus为我提供了只读匿名访问以及从登录菜单以管理员身份登录的功能。
大。问题(这并不奇怪)是当Eclipse / M2E试图联系我得到的Nexus存储库时:
"无法转移神器' myartifact'从/到nexus(https://mycorporateserver.corporation.com/nexus/):握手警报。"
在我的settings.xml中,我包含了
<servers>
<server>
<id>tried many different versions of the server name including full URI</id>
<username>username</username>
<password>password</password>
<server/>
<servers/>
但这似乎不起作用 - 我认为这是有道理的,因为我没有尝试登录Nexus,而是将我的凭据提供给ldap。(?)
在M2E / Eclipse中,有没有办法提供所需的LDAP信息?
最好是不让httpd管理访问权限,而是让Nexus配置处理所有LDAP?是否有更好/不同的方法来配置Nexus / httpd / LDAP / Eclipse来解决问题?
感谢所有指点和指导!
答案 0 :(得分:1)
“无法将神器'myartifact'从/向nexus转移 (https://mycorporateserver.corporation.com/nexus/):握手警报。“
这是一个SSL握手问题,运行Eclipse的Java不认为Nexus上安装的证书有效。这几乎可以肯定是因为:
解决方法是将Nexus上的证书安装到运行Nexus的java的信任库中。
有关详细信息,请参阅此处:
答案 1 :(得分:0)
最终,正如我所理解的那样,在apache httpd配置中如何定义VirtualHost和ServerName是不匹配的。
https://mycorporateserver.corporation.com/nexus/是ServerName,但VirtualHost是使用ip和端口https://mycorporateserver.corporation.com:port定义的。
原始
<VirtualHost ip:port>
ServerName mycorporateserver.corporation.com/nexus/
...ldap and proxy pass configs
</VirtualHost>
由于我们有多个包含此ip和端口组合的虚拟主机,因此服务器会进一步查看配置,以通过读取ServerName来查找正确的页面。由于没有ServerNames与客户端发送的内容匹配,因此发生了握手错误。 https://httpd.apache.org/docs/current/vhosts/name-based.html
更改httpd conf中的ServerName以包含端口解决了握手错误。
最终
<VirtualHost ip:port>
ServerName mycorporateserver.corporation.com:port/nexus/
...ldap and proxy pass configs
</VirtualHost>
(我绝不是apache的httpd专家,仍然想知道是否有办法在不显示URL的情况下完成所有这些操作)
然后,当从Eclipse / M2E向服务器发送请求时,响应是&#34;未经授权&#34;
将nexus服务器加上用户名和密码添加到settings.xml解决了授权问题,一切运行良好!
<servers>
<server>
<id>nexus</id>
<username>username</username>
<password>password</password>
<server>
</servers>
为确保密码不以纯文本格式存储,此Maven站点上的说明用于创建加密密码:https://maven.apache.org/guides/mini/guide-encryption.html
事后看来,这个问题可能会被提出更好/不同的问题,但我还不知道我今天学到了什么。