我正在使用 Artifactory Pro ,并且最近已从6.6.5升级到6.8.6。
服务器启动时,会显示以下消息:
(o.a.w.s.ArtifactoryContextConfigListener:96)-应用程序无法 初始化:超时,等待加入join.key文件 在/var/opt/jfrog/artifactory/etc/security/join.key中可用 (o.a.w.s.ArtifactoryFilter:194)-Artifactory无法初始化: 上下文为空
我搜索并找到了类似https://www.jfrog.com/confluence/display/ACC/Join.key+-+Creating+Trust+between+Services
的文档说我可以创建自己的128位AES密钥(我用openssl做到了),但是服务器在引导时删除了带有无法读取或验证的消息的消息。我看到如下错误消息:
2019-03-12 22:49:15,670 [art-init] [INFO] (o.j.a.c.AccessClientBootstrap:70)-使用连接创建访问令牌 关键2019-03-12 22:49:15,790 [art-init] [ERROR] (o.a.w.s.ArtifactoryContextConfigListener:96)-应用程序无法 初始化:无法授予令牌,响应代码:400,正文:{
“错误”:[{ “ code”:“ BAD_REQUEST”, “ message”:“无法验证jwt sha:30f20af6bed379ee249ce6d5e536596c8d087f7d08ff907b6515e289d909c2f5” ]}
我正在看一个人工页面,上面显示:
{“错误”:[{ “状态”:500, “ message”:“ Artifactory无法初始化:检查Artifactory日志中是否有错误。” }]}
我正在使用下载的rpm方法"rpm -U jfrog-artifactory-pro-6.8.6.rpm"
进行安装。
我尝试降级到6.8.2,尝试降级到6.6.8,然后再升级回6.8.6。 BTW降级到6.6.8我最终得到了404。
如何获取一个有效的join.key
文件,或关闭需要该文件的功能?
答案 0 :(得分:0)
在版本6.8中引入了连接密钥概念,在此之前,认证是通过与数据库组件一起生成的称为master.key的密钥完成的。由于要迁移,因此数据库将无法访问人工服务,因为已向其注册了旧密钥。你可以尝试一件事
我还相信在所有迁移中我们都不会更改身份验证机制
答案 1 :(得分:0)
JFROG提供的此解决方案对我们有效
export JFROG_JOIN_KEY=abcdef1234567890abcdef1234567890
使用此特定命令启动工件
systemctl start artifactory
在环境变量中设置密钥(不应该是上面的密钥)并成功开始工作。
答案 2 :(得分:0)
我也在将工件从6.6.5升级到6.8.7,并遇到了与OP相同的问题,但是在我的情况下,设置是使用自定义的tomcat和自己的init.d服务文件。在Artifactory Access应用程序的日志中,我注意到以下行:
[WARN ] (o.j.a.s.s.JoinKeyDistributer:73) - There are no Paths to distribute the Join Key to
,并在查看了内置脚本artifactoryManage.sh之后,发现Artifactory引入了新的java启动参数-jfrog.join.key.paths
下面是来自artworkoryManage.sh的报价
JOIN_PATHS=$ARTIFACTORY_HOME
if runMetadata;then
export JFROG_MDS_HOME="$ARTIFACTORY_HOME/metadata"
export JOIN_PATHS=$JOIN_PATHS:$JFROG_MDS_HOME
fi
JAVA_OPTIONS="$JAVA_OPTIONS -Djfrog.join.key.paths=$JOIN_PATHS"
将其添加到init.d服务脚本密钥后,就可以正确并自动生成该密钥。
答案 3 :(得分:0)
我在Amazon Linux EC2实例上全新安装Artifactory 6.10.2时遇到了此问题。由于我使用Amazon Linux tomcat-8.5软件包,因此无法使用常规的工件安装脚本,因此需要一些额外的步骤来避免以下异常。技巧是在访问和人工实例的初始化期间的正确时间创建适当的密钥。在找到这些步骤组合之前,我进行了很多失败的尝试,这些步骤对我来说确实可靠,并且可以干净地创建一个新实例。
注意:这仅适用于全新安装,不适用于升级。
java.lang.IllegalStateException:等待join.key文件超时 可以在/usr/share/artifactory/etc/security/join.key
中使用
我使用的过程是:
# Upload the access.war and artifactory.war via the Tomcat Manager webapp.
# As soon as these are uploaded, stop tomcat and delete the automatically-created artifactory folder.
# Create artifactory folder.
mkdir /usr/share/artifactory
chown tomcat.tomcat /usr/share/artifactory
cd /usr/share/artifactory
# Start tomcat.
service tomcat8 start
# Monitor the etc/security folder repeatedly until it has been automatically created by the artifactory webapp (a few seconds):
ls etc/security
ls etc/security
ls etc/security
# Create a new master key for artifactory:
openssl rand -hex 16 > etc/security/master.key
chown tomcat.tomcat etc/security/master.key
chmod 600 etc/security/master.key
# Monitor the access/etc/keys folder repeatedly until it has been automatically created by the access webapp (about 20 seconds):
ls access/etc/keys
ls access/etc/keys
ls access/etc/keys
# Create a new join key for access:
openssl rand -hex 16 > access/etc/keys/join.key
chown tomcat.tomcat access/etc/keys/join.key
chmod 600 access/etc/keys/join.key
cp -a access/etc/keys/join.key etc/security/join.key
# Check the logs to confirm artifactory was able to connect to the access server:
tail logs/artifactory.log
2019-06-03 15:47:51,644 [art-init] [INFO ] (o.a.w.s.ArtifactoryContextConfigListener:215) -
###########################################################
### Artifactory successfully started (53.527 seconds) ###
###########################################################
答案 4 :(得分:0)
我遇到了向6.12.2迁移的错误
为我的案件找到了一个简单的解决方案。
创建一个AES-128位密钥并将其粘贴到文件中。
将文件另存为join.key。
将文件复制到Access上的以下位置。
$ ACCESS_HOME / etc / keys / join.key
cat > $ACCESS_HOME/etc/keys/join.key
chown tomcat.tomcat $ACCESS_HOME/etc/keys/join.key
chmod 640 $ACCESS_HOME/etc/keys/join.key
已复制密钥文件以进行访问,因为问题的根源在于访问无法分发密钥。
cp $ ACCESS_HOME / etc / keys / join.key $ ARTIFACTORY_HOME / etc / security / join.key
*理想情况下,应该配置分发路径,但是如果需要快速重启服务,则可以执行手动过程并在之后修复属性。
答案 5 :(得分:0)
该线程有点陈旧,但是认为在Windows上运行Artifactory的用户可能会受益于我们解决此问题的经验。
我们最近遇到了同样的问题,即在Windows Server上将5.x OSS实例升级到6.10。解决方案只是卸载并重新安装Artifactory Windows服务。原始服务安装过程中捕获的应用程序配置已过期。这是“没有将联接密钥分发到的路径”错误的根本原因。我们以前在其他Tomcat应用程序中已经看到过这个问题。