升级到6.8.x Artifactory Pro时未创建或删除join.key文件

时间:2019-03-13 13:20:37

标签: artifactory

我正在使用 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文件,或关闭需要该文件的功能?

6 个答案:

答案 0 :(得分:0)

在版本6.8中引入了连接密钥概念,在此之前,认证是通过与数据库组件一起生成的称为master.key的密钥完成的。由于要迁移,因此数据库将无法访问人工服务,因为已向其注册了旧密钥。你可以尝试一件事

  1. 使用db.properties文件为此创建一个新的数据库
  2. 重新配置工件->查看是否正常->如果正常,则问题在于密钥认证,因此您必须使用现有密钥而不是新密钥,因为这是迁移。 li>

我还相信在所有迁移中我们都不会更改身份验证机制

答案 1 :(得分:0)

JFROG提供的此解决方案对我们有效

  • 停止Artifactory和Tomcat
  • 删除etc / security / join.key下的任何密钥
    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迁移的错误

为我的案件找到了一个简单的解决方案。

  1. 手动创建join.key文件(instructions);
  

创建一个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

  1. 已复制密钥文件以进行访问,因为问题的根源在于访问无法分发密钥。

    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应用程序中已经看到过这个问题。