【问题标题】:Jenkins Slave using JNLP requires security promptJenkins Slave 使用 JNLP 需要安全提示
【发布时间】:2014-08-21 14:41:27
【问题描述】:

我们正在使用 Jenkins 在不同的虚拟机中驱动自动化 GUI 测试。操作系统是 Win7/64 和其他 Windows 变体。虚拟机使用 JNLP 方式连接到 Jenkins Master。无法切换到其他连接,因为作业必须使用 GUI 执行程序。

由于安全要求的提高,Java 现在发出一个对话框来确认 Jenkins Remoting Agent 的执行。这显然破坏了测试的自动执行。此对话框每 24 小时显示一次。将这段时间增加到一年也可以解决我们的问题。

提供的详细信息提到了不同的方面,例如 应用程序的关联文件 (JNLP) 没有数字签名

我们尝试了不同的 Java 版本(7u67、Java 8u11 和 8u20)和不同的安全设置。

Jenkins 是最新的稳定版 1.565.1(尝试了更新和新安装的版本)。在全新安装中也尝试了最新的 Jenkins 1.576。

这个问题可以在我们这边解决还是只能在 Jenkins 那边解决? 有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: java jenkins continuous-integration automated-tests jnlp


    【解决方案1】:

    解决这个问题的方法是使用Deployment Rule Set。主要困难是在正确的位置创建和存储证书。

    这是解决上述问题的分步指南

    1. 安装 Java SDK (v7)

    2. 生成自签名 CA,有效期 50 年:

      "C:\Program Files\Java\jre7\bin\keytool.exe" -genkeypair -alias selfsigned -keyalg RSA -keypass changeit -keystore identity.jks -storepass changeit -startdate "2000/01/01 00:00:00" -validity 18262 -keysize 2048
      
    3. 要从密钥库中提取证书,请使用以下命令:

      "C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias selfsigned -file Our_CA.cer -keystore identity.jks -storepass changeit
      
    4. 将 ruleset.xml 创建为 ANSI 文件(例如,使用 Notepad++):

      <ruleset version="1.0+"> <rule> <id location="http://url.to.web.server" /> <action permission="run" /> </rule> <rule> <id /> <!-- The last rule is the default policy and the id should be blank. --> <action permission="default" /> </rule> </ruleset>

    5. 将ruleset.xml转换为jar文件:

      "C:\Program Files\Java\jdk1.7.0_67\bin\jar.exe" -cvf DeploymentRuleSet.jar ruleset.xml
      
    6. 签署 jar DeploymentRuleSet.jar

      "C:\Program Files\Java\jdk1.7.0_67\bin\jarsigner.exe" -keystore "identity.jks" -signedjar "DeploymentRuleSet.jar" DeploymentRuleSet.jar selfsigned
      
      verify jar:
      "C:\Program Files\Java\jdk1.7.0_67\bin\jarsigner.exe" -verify -keystore "identity.jks" -verbose -certs DeploymentRuleSet.jar
      

    切换到应该启动 JNLP 应用的 PC

    1. 将签名的 DeploymentRuleSet.jar 复制到 C:\Windows\Sun\Java\Deployment

      文件夹必须在 Win7/32 上创建。

    2. 清理 C:\Users\\AppData\LocalLow\Sun 和 C:\Jenkins-Slave\

      删除整个文件夹 C:\Users\&lt;user name&gt;\AppData\LocalLow\Sun(和 Oracle) 删除C:\Jenkins-Slave\中除批处理StartJenkinsSlave外的所有文件

    3. 启动配置 Java,切换安全选项卡

      检查名为“查看活动部署规则集”的链接。链接必须显示 ruleset.xml 的内容。

    4. 将自签名证书导入为可信证书和签名者 CA

      在安全选项卡上开始管理证书并导入之前导出的证书文件 Our_CA.cer 两次。将其作为可信证书和 Singer CA 导入。

      管理证书 -> 证书类型:可信证书/Geschützte Zertifikate,导入 AND 证书类型:签名者 CA/Signaturgeber CA、导入

    【讨论】:

    • 这在 OS X 下工作,但 DeploymentRuleSet.jar 进入 /Library/Application Support/Oracle/Java/Deployment
    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2014-10-12
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多