Camunda是通用的流程编排引擎
1. 企业版破解方法
Camunda Platform企业版功能比社区版更完善,不过企业版默认仅能试用30天,按照如下方法可以突破此限制长期使用。
首先在 Camunda下载页面选择 30-Day Trial Enterprise Edition
填写相关信息后下载企业版,
注意邮箱必须填写真实邮箱,因为Camunda会向邮箱发送一个试用账号和License,只有使用此账号才能下载。
下载并解压后的Camunda目录结构如下所示,在internal/webapps目录下有一个名称为 camunda-license-check
的jar包,
这个jar包就负责校验license,后续步骤会替换jar包根目录下的公钥 unified_public_key.der
configuration/ internal/ --example/ --rest/ --swaggerui/ --webapps/
下一步执行如下如下Java类生成密钥对和签名,注意修改main方法中的 privateKeyPath
和 publicKeyPath
两个参数为电脑上存在的目录。
这个类运行后会打印一个无限期使用的license字符串,保存下来在下一步使用。
public class Camunda {
private static final Base64 BASE64 = new Base64(0);
/**
* 生成密钥对
* @param privateKeyPath 私钥文件
* @param publicKeyPath 公钥文件
* @throws NoSuchAlgorithmException
* @throws IOException
*/
private static void generateKeyPair(String privateKeyPath, String publicKeyPath) throws NoSuchAlgorithmException, IOException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(4096);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey aPrivate = keyPair.getPrivate();
PublicKey aPublic = keyPair.getPublic();
byte[] publicEncoded = aPublic.getEncoded();
byte[] privateEncoded = aPrivate.getEncoded();
FileCopyUtils.copy(publicEncoded, new FileOutputStream(publicKeyPath));
FileCopyUtils.copy(privateEncoded, new FileOutputStream(privateKeyPath));
}
private static String sign(String privateKeyPath) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, SignatureException {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keySpec1 = new PKCS8EncodedKeySpec(FileCopyUtils.copyToByteArray(new File(privateKeyPath)));
PrivateKey privateKey = keyFactory.generatePrivate(keySpec1);
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
String licenseBody = "customer = jd;expiryDate = unlimited;cawemo = true;optimize = true;camundaBPM = true;";
signature.update(licenseBody.getBytes());
byte[] sign = signature.sign();
String encodedSign = BASE64.encodeToString(sign);
encodedSign = encodedSign + ";\n" + "customer = jd;\nexpiryDate = unlimited;\ncawemo = true;\noptimize = true;\ncamundaBPM = true;";
return encodedSign;
}
public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeySpecException, SignatureException, InvalidKeyException {
String privateKeyPath = "C:/Users/pxzxj1/Desktop/private_key.pem";
String publicKeyPath = "C:/Users/pxzxj1/Desktop/unified_public_key.der";
generateKeyPair(privateKeyPath, publicKeyPath);
String signature = sign(privateKeyPath);
System.out.println(signature);
}
}
使用上一步生成的unified_public_key.der公钥替换 camunda-license-check
jar包中的对应公钥后就可以启动服务。启动后在License Key菜单中输入上一步生成的
License字符串,保存后会提示 Your license key has unlimited validity. It will not expire. 表示已经破解成功。