求助大佬,关于Jetbrains Server激活相关问题

前段时间看了下 Crazer大佬关于jetbrains server激活的帖子,于是想着自己写代码实操验证下,结果就发现翻车了。先抛出问题截图:

然后说下问题现象:
经过代码,构造的Response长下面这样:

<!--  SHA1withRSA-HZRPQrlS1ayMLz36qjUx6XyLvCAzR60bwJDJVpLDtxVCuot6ESLKg0o9Zm/qtHVyRKfDhuAbLNfscFxNvztjnRH/0kPPoWBWl9CFP70gqWh3wiwikwegtAvYLN2AkOiXqKQ/zCku3e5cJqoUgfRu9eYolg0rRZAETsjADz7XRLwpVHXO9jNGSDhcPVJ6mIIlP3dI7+EKYi8Wg1cA3iJLAp7gOXlecF961i+e49REi5LSCeFDXUiOI7x+zFV84n4xb9mUoqUjHOdEwTtFx4r/hMpv3bEFXWluVkRQE1vRQgyYxDY7cNk78Z4vcyf0UW7SK1rQDHd4ZeU4Kdt969pBHA==-MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMTEkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAwMDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJSgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClBesXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4KX3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnikKBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQwf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKMiNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2XlV4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXUM36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5DjObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYYgPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXfy6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpdqpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32jB/bfiw== -->
<ObtainTicketResponse><action>NONE</action><confirmationStamp>1719154702147:7e364b38-32a3-4b56-a197-3ce1b9888b73:SHA1withRSA:AJERlPNxZ0uklbapDPMPYprs7XF8SZEAjdh+kAu978239moG1PgkIJ9wnIEjf2Uh8XiBNZ8hGCseXcv/qEeyXch6DfrApV49M1IIGYHJqpnKD3u+BKcIaCQ7jSdGwi68qeoNuF1H5C7CdMcpxq7fyKwitRWDxKn/EMgrYRleAF6J0+k69u1Ym8zIccwbdxerfdY0lWy55hbYB2SKEV/fGcuJESw0jsVetWak82hge42K1FVgG+MoF7T/ARhxbjzt8E7mF+FY3z0d+1o9L31cGQPxDLVSfEOla+ZLd7B0cQQllL49onBkAVDfD/hBCcE3T9L3FaPei2KZIB2Rm57h1Q==:MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMTEkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAwMDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJSgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClBesXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4KX3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnikKBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQwf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKMiNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2XlV4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXUM36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5DjObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYYgPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXfy6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpdqpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32jB/bfiw==</confirmationStamp><leaseSignature>SHA512withRSA-H/UuGpHqKvIRFMbNyJOEYamloBqhh3aLZgndYA5oWnzClleaRGsNvdf8rhLA07CqNcZpRUBA2FC2yLk78OXVjwZMFx1/CZD2UVP5IWYE2E+CWsRZiVTqsfUDpGicgbtHH91XutqnVBw6ACe/4eHz3pENeMH+ZOVgfXnjmECUPW3AcQzm7pCApj4R39tjIyXtlXW2OE7Yf52fePqrsfqTCrj8/JQEDIvCdWNgwNDnDjVOU714OAle3Ma4DhmZdyE04DQlsXz7p1Fl80K+xaF4hJLN7F+Y61Kd3JzezZKxBw7+4V52bW7J19boUIxdMIjyJhZ2RKEcoKUcHHm8Zvq0SQ==-MIIDuzCCAaOgAwIBAgIGAZAwsryNMA0GCSqGSIb3DQEBCwUAMBgxFjAUBgNVBAMTDUpldFByb2ZpbGUgQ0EwHhcNMjQwNjE5MTMzMjIxWhcNNDQxMjMxMTYwMDAwWjAlMSMwIQYDVQQDExp6eXpsaW5nLmxzcnYuamV0YnJhaW5zLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIXVgmzAeTGAUY4Yb+S3KZ2t2qO08gsQfqLVTC0q8FbwLW+NCSp7Q788D7fSOiCN4uvT3qW/V4sPphFP4Ateq0mBjV1vmNO1DpKsU9Rv8h+eAxoRM+5qgN5W7mRBPT/pbOEm60S4gIRfsncmjKQSfgwGzZkB7o9Mbm7wfgnHDD+tlNGRF4TFbMUyTNKszCTjpvxzh5fwItiOQCmxQWrzY9dfKKyWGwT8mtuZEjdV/60n9U0MqfQtfDtc0i5SPXlSv0PBbMLShEItGjHUZKJGYW/JKicP8wR3YCwbKjmAF58W4kKwhwxVQZhR06b2AMu+7eoUDan20/LK5VNCjhmKgL8CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEALp5G9XHoRtSHv2efTjagCoGvacRtSXRRObDyJcBDra/TSbK67ln+ghum8QBzbkFLPoYbl59lr42IweDrMUgFGdKlzj7Y61hqSz5dAr8NqCQZ5dN4ptc6c05qOgQo3SiohYq29UoNETYl+mrt01DchmyoI1rWAvxG8KFqaS3qLvYFwEj5C8irGRTCV+Iycaw4M1VKx0ZnJpLQaIRGeBTE/Ah0oEEO5cXas1dt+ff1Btbx6fHynqX+mnXHaUmHyrArB/H5lIf0W4JRRHr5jSlB35BCHPF6lMjNjmlr2FXAtWzbjmECAR56UJ7FfSUIHvA5fbICcHQrI7w/pAbm5TbvNriF/foVc4bMyjvWuccwPJHrLLL0Ua4Eu8yJ/B7i3/GLKEouPt4J+cuWSS8EOhap0tWxDmKoly+0U6CocjKvz4xQyP4N2QWjMbANS+bL21dECguYd73Pt0NcD3MumPLLs6zYFOCcvqOofkYzfcu7Jm0FV2xvPSq5T/mygjZjjiCZjkQE0g78h89F9fUg9zP7aB9/iFa1pTPuTIGPZ26C8LtpPl7ygPrOcGfeEa2r/t++Hc9Dx5UjozqQfTiN2uCF9HbOXR7LkyLh+yd1I+dXLqgBSXGrMz5wJPGKxlD2oEEWDTO3V2tV/Us+kVPKFAlhPZ7Ap85HCRDKqgRMHZqpysM=</leaseSignature><message>OK</message><prolongationPeriod>123456</prolongationPeriod><responseCode>OK</responseCode><salt>1719154702031</salt><serverLease>4689898213000:zyzling</serverLease><serverUid>zyzling</serverUid><ticketId>1</ticketId><ticketProperties>license=xxx licenseType=5</ticketProperties><validationDeadlinePeriod>-1</validationDeadlinePeriod><validationPeriod>66666666</validationPeriod></ObtainTicketResponse>

注意哈,这里内容没有格式话。然后按照规则,取<!-- -->部分去签名校验,这里我是采用的简单方式,即构成为:SHA1withRSA-{响应签名}-{主题为zyzling.lsrv.jetbrains.com的证书}

然后power.conf中的配置是这样的:

; 服务器激活测试
EQUAL,146169242458608186652221153247707928878774564318872814848611555386850439828683306039502635380443332748760851420596013203615474415297420670561038948251194208420780206758217739736468146060684946209063535326673060380874233337472803822118043049206727368848307319180056539515557899036295560374592507754899687980171552914108599459643945206972619597823896896439271520033924865116792819160056087892636538912184650242954378250842384616654261564888017018078998017393985517179127168333600025545755122580026206819728548997833150777617551417990837023361716778742302199900634374038401742532417351801509546092929809510211539907197787134216673786130533004711127649113696142124539617137831286078861724331366616244057123601763558657185422389673367185576182285235292391917108691230950022509263683785874891480016545626654599643784695199061157695184569764201115925557477493009625138850212463453042483184753601933457432353424329191741463499363320630435919229366223258969811703360075485448967298082667310772853206565563060811203073212225549078100557148579841850411638602018626224275834260259754276227936327756331563323977447520918853198325508736148253174775252013732422286618361182882522699038139429071843823868681235609834131917567466316289148690797879179,65537,657823416415964932845156435107145357714205418747915356734397055242964933221752404166614935255105249101653916721681603662754307632457128805443068644284748929421507178622933348669378235847742899773920765918770105482851534467296284105250512573151705220224379509383835022323282176179690146311979451556541118129344282127375534752754929526193258755897888515754328964698687671896985405008425332766082319260988023654359845072776189451448786758245414253386146246727354454047135428416624852422567360097346671648093064429279847823280592246506886401865455491924420415707803245018138595108029359998829520236522620749918729938206134739331246902031807601266419258080411903201595710155467901291142142443220333539750397923736434950558371997170985472272249812750161962720036837656464089126216749585148030883029438285184930024286517865710539947589764564204842426698322404033441531662829238875205420761652375337327297032255730262635511533223504109798364923988127319356119135982652788834405038113746394301957551167740345788175766290794604666781402329824924118191746319728033878045396093674696713022814027690165596773992550010915823534552020920573926469894452526033833249442230929742486602298477270672101197444729222659891038350303699501280729658274069437->31872219281407242025505148642475109331663948030010491344733687844358944945421064967310388547820970408352359213697487269225694990179009814674781374751323403257628081559561462351695605167675284372388551941279783515209238245831229026662363729380633136520288327292047232179909791526492877475417113579821717193807584807644097527647305469671333646868883650312280989663788656507661713409911267085806708237966730821529702498972114194166091819277582149433578383639532136271637219758962252614390071122773223025154710411681628917523557526099053858210363406122853294409830276270946292893988830514538950951686480580886602618927728470029090747400687617046511462665469446846624685614084264191213318074804549715573780408305977947238915527798680393538207482620648181504876534152430149355791756374642327623133843473947861771150672096834149014464956451480803326284417202116346454345929350148770746553056995922154382822307758515805142704373984019252210715650875853634697920708113806880196144197384637328982263167395073688501517286678083973976140696077590122053014085412828620051470085033364773099146103525313018873319293728800442101520384088109603555959893639842091339193847383381730463944169311600357511837761706609440789164799726899837053998916209

这个配置是可以让我生成的证书受jetbrains信赖,因为我尝试注释掉这个power.conf配置,报的是另外一个错。

然后现在就卡住了,一直报这个签名不可用。为什么确定是这里的签名不可用呢?我尝试着修改签名算法类型,即把SHA1withRSA改成SHA256withRSA,报错时的算法变了。

这个签名和内容,我用第三方工具也验证了,签名是验证通过的,如下:

所以现在有点懵,希望有大佬可以救救孩子,万分感谢。

最后附上相关代码:

   @GetMapping("/obtainTicket.action")
    public String obtainTicket(ObtainTicketReq req) throws Exception {
        log.info("req:{}", req);
        ObtainTicketResp obtainTicketResp = new ObtainTicketResp();
        obtainTicketResp.setConfirmationStamp(getConfirmationStamp(req.getMachineId()));
        obtainTicketResp.setLeaseSignature(getLeaseSignature("4689898213000:zyzling"));
        obtainTicketResp.setProlongationPeriod("123456");
        obtainTicketResp.setSalt(req.getSalt());
        obtainTicketResp.setServerLease("4689898213000:zyzling");
        obtainTicketResp.setServerUid("zyzling");
        obtainTicketResp.setTicketId("1");
        obtainTicketResp.setTicketProperties("license=xxx licenseType=5");
        String respStr = generatorSignBody(generatorXmlStr(obtainTicketResp));
        log.info("resp:\n{}", respStr);
        return respStr;
    }

    public String getLeaseSignature(String severLease) throws Exception{
        return "SHA512withRSA" + "-" + RSAUtil.sign("SHA512withRSA",SERVER_PRIVATE_KEY,severLease.getBytes(StandardCharsets.UTF_8)) +  "-" +codeCertStr;
    }

    public String getConfirmationStamp(String machineId) throws Exception {
        String str = System.currentTimeMillis() + ":" + machineId;
        String sign = RSAUtil.sign("SHA1withRSA", SERVER_PRIVATE_KEY, str.getBytes(StandardCharsets.UTF_8));
        return str + ":" + "SHA1withRSA" + ":" + sign + ":" + serverCetStr;
    }

    public String generatorSignBody(String xml) throws Exception {
        // 组成:签名算法-签名内容-server证书-中间证书(可选)
        // SHA1withRSA-server证书的私钥对xml的签名-server证书
        String sign = RSAUtil.sign("SHA1withRSA", SERVER_PRIVATE_KEY, xml.getBytes(StandardCharsets.UTF_8));
        return "<!--  SHA1withRSA" + "-" + sign + "-" + serverCetStr + " -->\n" + xml;
    }

    private static String generatorXmlStr(Object o) throws JAXBException {
        // 通过Xml工具把对象转成xml
        JAXBContext jaxbContext = JAXBContext.newInstance(o.getClass());
        // 保存文件,将Java对象转化为xml文件
        Marshaller marshaller = jaxbContext.createMarshaller();

        // marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
        // 设置 Marshaller 属性,去掉 xml 标识
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
        // 将Java对象序列化为XML字符串
        StringWriter writer = new StringWriter();
        marshaller.marshal(o, writer);
        return writer.toString();
    }

证书的pem:

-----BEGIN CERTIFICATE-----
MIIDwDCCAaigAwIBAgIGAZArjVQTMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMT
EkxpY2Vuc2UgU2VydmVycyBDQTAeFw0yNDA2MTgxMzMzMjVaFw00NDEyMzExNjAw
MDBaMCUxIzAhBgNVBAMTGnp5emxpbmcubHNydi5qZXRicmFpbnMuY29tMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh/t3eMl3e1UZ8WEZ/+WdHD8h7HEJ
SgFG42IKnmdXVtTfnW/GU1qm7dcjOptJerndJiDUwTjpgBXVcaK86C7iQ6Q5RClB
esXswGkDKcKs1nkCaTIA/J1QEoJBeQac1VrnBzrkfDYvkLZNZov50MVcs6DEEO4K
X3H5hNF5vYdG452yVhF0zLCNtcB/PEnnWlXACcfQ4c7042WdQdwVJ+5ae2kKKnik
KBz+I2DM40N9AZASg4mJsqylXMnPPot+JUPeqnjkT1sJdZek2PoXNx4gvJzxy3r+
xSSh4wh343GICWVXPpHnMxhRZJavCfxABGccC5DJuH6ilDx8c5X2G51CvQIDAQAB
MA0GCSqGSIb3DQEBCwUAA4ICAQAj1DQgIBwtugpEx+nCP67l6NDTHVfVVNEhuy0e
1muSQA1RodryDWOY+Mtlv+5xsf7W35jmSOKG/dtgzfRN8mAdfuURhoiRRlLiGpDQ
wf6GEoh4A64XTBleW1u19Y3p4nPcwh9SfjFBnKLr8eR3erXVic8A02cPQrpKQYKM
iNM0pUTEQeKan4CexvKVdUJHRURgv9T/YDCVl6TIX0lRJUpOGFjN/CXPFbnmg2Xl
V4DQ98nC/p++ae3UjE+S7Rlgy90ynC+MXC/XS87yIp7TprzvyQtrOGgH//W0pxXU
M36nqBnEMLMVe1LC32MziPJH5dPWLe1z2WR/y/c3mSzzj3ufvt0lpKgRRC1tX/5D
jObKRcF/LCYmLxieP81fFgT2I34ahwqTHYQ0hj53bDdQ09zLA04khPW2DMzCjPYY
gPWIe9e2FOFUaQ8bfbGrraF1ZzP/wYHdTAtiK9B6VffWKmeno9/8cPXTBR8+fd+P
7qFYxKCN3rvibM0Spc8ui8P5W+uMTjgNtaiXPIH0mfXy3hbCkKlbuBIuJ5D4VvXf
y6tNLAn/iRyUyh8/DVC1BDA06Y5HJ4xIL4itNwrBmOcXc08qO6k77N0POwKdJkpd
qpKKc6CdLA+MxuP9Qkf5sGNV9/vU+UL64Yjw4LfJkPv3BdW3pXKS49YV4A1Gx32j
B/bfiw==
-----END CERTIFICATE-----

私钥的pem

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCH+3d4yXd7VRnx
YRn/5Z0cPyHscQlKAUbjYgqeZ1dW1N+db8ZTWqbt1yM6m0l6ud0mINTBOOmAFdVx
orzoLuJDpDlEKUF6xezAaQMpwqzWeQJpMgD8nVASgkF5BpzVWucHOuR8Ni+Qtk1m
i/nQxVyzoMQQ7gpfcfmE0Xm9h0bjnbJWEXTMsI21wH88SedaVcAJx9DhzvTjZZ1B
3BUn7lp7aQoqeKQoHP4jYMzjQ30BkBKDiYmyrKVcyc8+i34lQ96qeORPWwl1l6TY
+hc3HiC8nPHLev7FJKHjCHfjcYgJZVc+keczGFFklq8J/EAEZxwLkMm4fqKUPHxz
lfYbnUK9AgMBAAECggEAQruTvAES08HFw4FlowFqAsywtzoZ1umdgkVA9M++Ouyo
+Lg72fgo55umvEIs4z+HWgjOoCxv2t3cK7IzhrZLb+qN9/dPHRM4xoxCcyIIdBBa
sIlLlq0U+KBXxS8LlGDR8+hg7Nwip5/viB21cVEJ11VUIwLOsFxcmWO7nNlgXp7y
QISZI6rTLUdN8wM7u9AyGrnmbODqsKKZ1M75keWKO8I+yIIElG53LkNDHn/pEC9i
0FzP1FOptL/AiUe03WyqamSLJGbkkpNsz03tvhkvppwhOcuMsbw3nml7qkyyGoJS
r+4Fsi7ecDPJr8iv9JnbNzCUHymn11PXZZ1GaLaiOQKBgQDXNulWk4zbNihEdArI
1Uf2Ddk25qI0rU2ftPMCsQTwR9cNVIpviayw9ZNVLApsESrK6rxJ84bZAY2SblMG
YiC7zfMlYTcB4PkJ/VHyz0th6icKVO5NPIaUo+ITlc7/P5aaXn0MRDHUV3lOyGkn
1sSjnUENuD1pPrP8wNbL0rYUSwKBgQChwJ7ZBPjJqQuCGUBCbPPTOdezQUXwUsUs
iIaz/eZHFryFHaAIV+xdUL3/t5Szpoq65zUzgvHKD4r293nU7fbVb9lTj+3tfixX
HXpJNgUZuTrkaDtbeqIFVGjWu9N/zNhDlVWN/jnqyoWmJVCNq03P/sgfVxS8tYux
XwFbnn5QFwKBgQC7lzSa73AW38UHrfJ8jlP0aKvOjAgVTH5d2Fb+IJjCbIxKJUep
42JwuQ4cbpADFI+tYiCPgUMoQo9JdPrPlJcdvG3VRkCxVY0eJP3aXNBDX9t5yQAS
uNBCHfuAwNM2cBHxKq1rFMIuabTmdBAc1rp+NyMuN0roQuyWQuy3q0pkswKBgHoc
tM8ZlciIOgvpjD2Ziyl3jYPiTy5zDi/kkezoTSR14bSM/PfPiL2Z6xZWPYiyviED
04Ij5O2qdjqj8fHyBFp1qhgPnIuiqU7LDjqe8ZLN58vvdIBHQHHNm6gg/DaLKuk6
n/AmcQr0AZnAqeOJ46CWs/YVA67DT8aD9r54FNvZAoGAHOzppFbvt0xY1bC6OPqY
ID9Dpq2s8+C4Sp7Nj65QnbFQrPmL3af6Pbb6wDtOSIzejivSKAObGk+jsA0f3+eC
WET92RMhzFcyRfl30IXP8Msll0hapq09wo6QCA+KaXXm9pSKL9Z/V8aaejaEJB/w
2mTlxkU6MV/hEmmxxsHzIgU=
-----END PRIVATE KEY-----
1 个赞

先睡觉,希望明早有大佬可以救救孩子

1 个赞

目测getConfirmationStamp这里的sign有问题 你再看一下教程帖子中的这部分

2 个赞

翻下华总的仓库或者我的仓库 :joy:

2 个赞

你这里使用了工具类 你也没写是用的谁的
你先把别用这个 就按教程来看看是否正常

3 个赞

工具类是自己写的,代码是这样:

   public static String sign(String algorithm, PrivateKey privateKey, byte[] content) throws Exception {
        Signature signature = Signature.getInstance(algorithm);
        signature.initSign(privateKey);
        signature.update(content);
        byte[] signatureBytes = signature.sign();
        return Base64.getEncoder().encodeToString(signatureBytes);
    }

1 个赞

power.conf 里有两个参数
1、[Result]
这个填写你贴出来的
2、[Args]

这个得有具体的值,这里提供一份

EQUAL,65537,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281->3,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281

这样按照佬的教程使用 ja-netfilter.jar 激活才能成功

1 个赞

:joy: 自己找到了原因。记录下原因排查过程:
通过arthaswatch了一下String.split方法,观察分割后对不对,结果是这样的:


原来是在生成signBody时,注释后面多加了个空格,导致报错说SHA1withRSA签名不可用。去掉就好了。

去掉后,又发现报另外个错,如下:


毫无思绪,只好又用arthas观察一下,首先通过jad命令,大致看看这个com.jetbrains.u.Z.A类是啥,发现是个异常类;
再通过stack命令,查看这个异常类的调用堆栈:stack com.jetbrains.u.Z.A <init>,结果如下:

前面还有其他的报错,暂时不管,只看最后一个。
看堆栈,报错前的调用是com.jetbrains.u.Z.W类的Z方法,那接着就可以使用watch命令查看下传参、异常信息,命令:watch com.jetbrains.u.Z.W Z '{params,throwExp}' -n 5 -x 2 -e,结果如下:

发现这里是在验证leaseSignature,然后抛出了个Unexpected character in signature,按照leaseSignature的组成,猜想可能是未在power.conf配置激活码激活时的result那一串,打开配置文件一看,果然是,配好后,激活成功,如下图:

但是又有个问题了,licensed ToN/A这个还得再找找原因
原因找到了,ticketProperties中的license后面得再加个e,也就是licensee=zyzling

最后,再次感谢上面回复的大佬 @Hua @Lemon_Zuo @66xiaoge

1 个赞


找找你的这个,可以取接口传入的username或者hostName,定死也行

1 个赞

插件那块会有这个
image
,看佬你能不消灭它 :star_struck: