Erstellen Sie eine CSR mit erweiterten Informationen in Java

Selbst wenn Sie es googeln, wird es auf Japanisch kein Hit sein, daher gibt es möglicherweise nicht viel Nachfrage, aber ...

Betriebsumgebung

Die verwendete Version von Bouncy Castle ist wie folgt. Es ist zu alt!

Erstellen einer CSR mit privatem Schlüssel, öffentlichem Schlüssel und erweiterten Informationen

public class CreateExtensionCsr {
    public static void main(String[] args) throws Exception {
        //Generieren Sie einen RSA-Verschlüsselungsschlüssel, um den Verschlüsselungsschlüssel sicher zwischen zwei Punkten auszutauschen.
        KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
        keygen.initialize(2048);
        KeyPair keyPair = keygen.generateKeyPair();

        //Privat Schlüssel
        PrivateKey privateKey = keyPair.getPrivate();

        //Öffentlicher Schlüssel
        PublicKey publicKey = keyPair.getPublic();

        //Erstellen Sie eine CSR
        Security.addProvider(new BouncyCastleProvider());
        PKCS10CertificationRequest certReq = generateRequest(privateKey, publicKey);
        
        //In das PEM-Format konvertieren
        String csr = toPem(certReq);

        System.out.println(csr);
    }

    /**
     *Erstellen Sie eine CSR mit erweiterten Informationen
     */
    public static PKCS10CertificationRequest generateRequest(PrivateKey privateKey,
            PublicKey publicKey) throws Exception {
        Vector oids = new Vector();
        Vector values = new Vector();

        //Erweiterte Informationen erstellen
        oids.add(X509Extensions.SubjectKeyIdentifier);
        values.add(new X509Extension(false, new DEROctetString(new SubjectKeyIdentifierStructure(
                publicKey))));
        oids.add(X509Extensions.KeyUsage);
        values.add(new X509Extension(true, new DEROctetString(new KeyUsage(
                KeyUsage.digitalSignature))));

        //Erweiterte Informationen gewähren
        X509Extensions extensions = new X509Extensions(oids, values);
        Attribute attribute =
                new Attribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, new DERSet(
                        extensions));

        //CSR erstellen
        return new PKCS10CertificationRequest("SHA256withRSA", new X500Principal(
                "C=JP"), publicKey, new DERSet(
                attribute), privateKey);
    }

    /**
     *In das PEM-Format konvertieren
     */
    private static String toPem(Object obj) throws IOException {
        StringWriter sw = new StringWriter();
        PEMWriter writer = null;
        try {
            writer = new PEMWriter(sw);
            writer.writeObject(obj);
            writer.flush();
        } finally {
            if (writer != null) {
                writer.close();
            }
        }
        return sw.toString();
    }
}

Bestätigung des CSR-Inhalts

$ openssl req -text -noout -in testcreate.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b4:ed:73:b2:3a:02:d6:e5:6c:33:29:98:0a:cc:
                    f8:74:43:e0:04:8b:98:1f:f0:4d:1c:28:6e:b4:ec:
                    <<Kürzung>>
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Subject Key Identifier:
                00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:0
            X509v3 Key Usage: critical
                Digital Signature
    Signature Algorithm: sha256WithRSAEncryption
         8d:b7:fd:e2:14:04:7a:85:02:f1:d5:49:c0:02:c8:f2:46:72:
         b9:b5:f5:b3:e3:cf:06:ae:44:7a:37:12:b2:3d:7b:86:d0:db:
         <<Kürzung>>

Recommended Posts

Erstellen Sie eine CSR mit erweiterten Informationen in Java
Erstellen Sie einen SlackBot mit AWS Lambda & API Gateway in Java
Erstellen Sie eine TODO-App in Java 7 Create Header
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Ich kann in IntelliJ keine Java-Klasse mit einem bestimmten Namen erstellen
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
[Windows] [IntelliJ] [Java] [Tomcat] Erstellen Sie mit IntelliJ eine Umgebung für Tomcat 9
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
[Java] Erstellen Sie einen Filter
Versuchen Sie, ein Bulletin Board in Java zu erstellen
[Java] Erstellen Sie eine Sammlung mit nur einem Element
Lassen Sie uns mit Java ein supereinfaches Webframework erstellen
Erstellen Sie JSON in Java
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Anfänger] Erstellen Sie ein wettbewerbsfähiges Spiel mit grundlegenden Java-Kenntnissen
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
So erstellen Sie einen Daten-URI (base64) in Java
Implementieren Sie Singleton mit Enum schnell in Java
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Ausgabe true mit if (a == 1 && a == 2 && a == 3) in Java (Invisible Identifier)
Holen Sie sich EXIF-Informationen in Java
Erstellen Sie eine Java-Methode [Memo] [java11]
[Java] Erstellen Sie eine temporäre Datei
Suchen Sie eine Teilmenge in Java
Erstellen Sie einen Spielplatz mit Xcode 12
Erstellen Sie Azure-Funktionen in Java
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Erstellen Sie mit JAVA eine unveränderliche Klasse
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen eines Java-Projekts mit Gradle
Morphologische Analyse in Java mit Kuromoji
3 Implementieren Sie einen einfachen Interpreter in Java
Ich habe ein PDF mit Java erstellt.
Erstellen Sie eine Datenbank in einer Produktionsumgebung
Erstellen Sie eine neue App mit Rails
Erstellen Sie ein Java-Projekt mit Eclipse
Ein einfaches Beispiel für Rückrufe in Java
Erstellen Sie ein Servlet-Programm in Eclipse
Bleiben Sie in einem Java Primer stecken
Erstellen Sie Ausnahmen mit einer Fluid-Schnittstelle
Tweak Markdown mit Java Flexmark-Java
Erstellen Sie ein Maven-Projekt mit Befehlen
Erstellen Sie einen einfachen Webserver mit der Java-Standardbibliothek com.sun.net.httpserver
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Erstellen Sie eine benannte SkipList in Java, die wie eine nach Redis sortierte Menge aussieht
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Erstellen Sie mit JavaScript eine leistungsstarke Aufzählung mit Feldern und Methoden wie Java
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Stellen Sie die Sensorinformationen von Raspberry Pi in Java grafisch dar und überprüfen Sie sie mit einem Webbrowser