前阵子学习了Apache的openssl生成签名证书,通过一个简单的Web项目实现的,框架使用的是: struts2+spring+hibernate maven工程
1. 包结构:
2. Pojo(证书文件):
public class ServerCSR {
private String countryName;
private String provinceName;
private String localityName;
private String organizationName;
private String organizadionUnitName;
private String commonName;
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public String getLocalityName() {
return localityName;
}
public void setLocalityName(String localityName) {
this.localityName = localityName;
}
public String getOrganizationName() {
return organizationName;
}
public void setOrganizationName(String organizationName) {
this.organizationName = organizationName;
}
public String getOrganizadionUnitName() {
return organizadionUnitName;
}
public void setOrganizadionUnitName(String organizadionUnitName) {
this.organizadionUnitName = organizadionUnitName;
}
public String getCommonName() {
return commonName;
}
3. Service(具体生成证书的业务逻辑代码):
public interface IServerCrtsService {
public boolean makeCRT(ServerCSR serverCSR);
}
@Service
public class ServerCrtServiceImpl implements IServerCrtsService{
@Override
public boolean makeCRT(ServerCSR serverCSR) {
try {
String cmd = "cmd.exe /c CD D:\\Apache\\Apache\\bin && "
+ "openssl genrsa -out server.key 1024 && "
+ "openssl req -new -key server.key -out server.csr "
+ "-subj \"/C="+serverCSR.getCountryName()+"/ST="+serverCSR.getProvinceName()+"/L="+serverCSR.getLocalityName()+"/O="+serverCSR.getOrganizationName()+"/OU="+serverCSR.getOrganizadionUnitName()+"/CN="