Java 数字签名证书集颁发者名称

Java 数字签名证书集颁发者名称,java,itext,digital-signature,x509certificate,Java,Itext,Digital Signature,X509certificate,通过使用JavaX509Certificate,我生成了一个p12证书。对证书进行数字签名后,其显示的主题和颁发者相同。有谁能帮我把主题设为我的名字,发行人设为公司的名字 P12文件自身具有相同的发行人和主题 下面是我生成证书的代码 package com.dynamic; import java.io.FileOutputStream; import java.io.IOException; import java.security.InvalidKeyException; import j

通过使用JavaX509Certificate,我生成了一个p12证书。对证书进行数字签名后,其显示的主题和颁发者相同。有谁能帮我把主题设为我的名字,发行人设为公司的名字

P12文件自身具有相同的发行人和主题

下面是我生成证书的代码

package com.dynamic;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Principal;
import java.security.SignatureException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.security.x509.CertAndKeyGen;
import sun.security.x509.X500Name;
public class Dynamic { 
    public static void main(String[] args) {
        try{           
            Dynamic di=new Dynamic();
            di.createPFXFile();
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }    
public boolean createPFXFile() throws IOException, NoSuchAlgorithmException, CertificateException, InvalidKeyException, SignatureException, NoSuchProviderException
    {
        boolean flag=false;
        try {
            X509Certificate cert=null;
            KeyStore keyStore = KeyStore.getInstance("PKCS12");
            keyStore.load(null, null);
            CertAndKeyGen gen = new CertAndKeyGen("RSA","SHA1WithRSA");
            gen.generate(2048);
            Key key=gen.getPrivateKey();
            System.out.println("private key" + key);             
            cert=gen.getSelfCertificate(new X500Name("name","ccc","ddd","eee"), (long)365*24*3600);           
            X509Certificate[] chain = new X509Certificate[1];
            chain[0]=cert;
            System.out.println("chain[0] :"+chain[0]);
            keyStore.setKeyEntry("private", key, "password".toCharArray(), chain); 
            keyStore.store(new FileOutputStream("D:/"+uid+".p12"), "password".toCharArray()); 
            return flag=true;
        } catch (Exception ex) {
            Logger.getLogger(Dynamic.class.getName()).log(Level.SEVERE, null, ex);
        }
        return flag;
    }  
}

这是一个自签名证书,因此存在问题。要修复此问题,请首先创建CA证书(可以自签名),然后使用CA对证书进行签名

这是一个自签名证书,因此存在问题。要修复此问题,请首先创建CA证书(可以自签名),然后使用CA对证书进行签名

你至少应该发布一个代码示例,展示你已经尝试过的东西。你可以告诉我,屏幕截图上显示的工具是什么?CryptoGuy不是工具。CryptoGuy不是工具。这些是数字签名属性。在PDF文件中,右键单击数字签名,显示签名属性,显示签名者的证书将显示上述图像。JCS我用代码更新了帖子。你至少应该发布一个代码示例,显示你已经尝试过的内容。你可以告诉我,屏幕截图上显示的工具是什么吗?CryptoGuy不是工具。CryptoGuy不是工具。这些是数字签名属性。在PDF文件中,右键单击数字签名,显示签名属性,显示签名者证书将显示上述图像。JCS I用代码更新了帖子。