package com.zy.system.entity.license;
|
|
import de.schlichtherle.license.*;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import javax.security.auth.x500.X500Principal;
|
import java.io.File;
|
import java.text.MessageFormat;
|
import java.util.prefs.Preferences;
|
|
/**
|
* License生成类
|
*/
|
public class LicenseCreator {
|
private static Logger logger = LogManager.getLogger(LicenseCreator.class);
|
private final static X500Principal DEFAULT_HOLDER_AND_ISSUER = new X500Principal("CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN");
|
private LicenseCreatorParam param;
|
|
public LicenseCreator(LicenseCreatorParam param) {
|
this.param = param;
|
}
|
|
/**
|
* 生成License证书
|
*/
|
public boolean generateLicense(){
|
try {
|
LicenseManager licenseManager = new CustomLicenseManager(initLicenseParam());
|
LicenseContent licenseContent = initLicenseContent();
|
|
licenseManager.store(licenseContent,new File(param.getLicensePath()));
|
|
return true;
|
}catch (Exception e){
|
logger.error(MessageFormat.format("证书生成失败:{0}",param),e);
|
return false;
|
}
|
}
|
|
/**
|
* 初始化证书生成参数
|
*/
|
private LicenseParam initLicenseParam(){
|
Preferences preferences = Preferences.userNodeForPackage(LicenseCreator.class);
|
|
//设置对证书内容加密的秘钥
|
CipherParam cipherParam = new DefaultCipherParam(param.getStorePass());
|
|
KeyStoreParam privateStoreParam = new CustomKeyStoreParam(LicenseCreator.class
|
,param.getPrivateKeysStorePath()
|
,param.getPrivateAlias()
|
,param.getStorePass()
|
,param.getKeyPass());
|
|
LicenseParam licenseParam = new DefaultLicenseParam(param.getSubject()
|
,preferences
|
,privateStoreParam
|
,cipherParam);
|
|
return licenseParam;
|
}
|
|
/**
|
* 设置证书生成正文信息
|
*/
|
private LicenseContent initLicenseContent(){
|
LicenseContent licenseContent = new LicenseContent();
|
licenseContent.setHolder(DEFAULT_HOLDER_AND_ISSUER);
|
licenseContent.setIssuer(DEFAULT_HOLDER_AND_ISSUER);
|
|
licenseContent.setSubject(param.getSubject());
|
licenseContent.setIssued(param.getIssuedTime());
|
licenseContent.setNotBefore(param.getIssuedTime());
|
licenseContent.setNotAfter(param.getExpiryTime());
|
licenseContent.setConsumerType(param.getConsumerType());
|
licenseContent.setConsumerAmount(param.getConsumerAmount());
|
licenseContent.setInfo(param.getDescription());
|
|
//扩展校验服务器硬件信息
|
licenseContent.setExtra(param.getLicenseCheck());
|
|
return licenseContent;
|
}
|
|
}
|