Generate X.509 Certificate From Public Key In Java

12.04.2020by

Yes, with BouncyCastle, creating an X509 cert from 2 public keys (the key for the cert and the one for the CA) is done here. I turn the resulting certificate into PEM here. Share improve this answer. Creating X.509 certificates programmatically in Java. My probem statement was simple: create a X.509 certificate with only a few fields being configurable, sign it with an already existing CA private key/certificate combination, and write the new certificate in PKCS12 format.

Public Keys, Private Keys, and Certificates

When performing authentication, SSL uses a technique called public-key cryptography.

Public-key cryptography is based on the concept of a key pair,which consists of a public key and a privatekey. Data that has been encrypted with a public key canbe decrypted only with the corresponding private key. Conversely,data that has been encrypted with a private key can be decrypted onlywith the corresponding public key.

The owner of the key pair makes the public key available toanyone, but keeps the private key secret.

A certificate verifies that anentity is the owner of a particular public key.

Public

Generate X.509 Certificate From Public Key In Java Download

Certificatesthat follow the X.509 standard contain a data section and a signaturesection. The data section includes such information as:

  • The Distinguished Name of the entity that owns thepublic key

  • The Distinguished Name of the entity that issued thecertificate

  • The period of time during which the certificate isvalid

  • The public key itself

You can obtain a certificate from a Certificate Authority(CA) such as VeriSign. Fifa 11 download. Alternately, you can createa self-signed certificate, in which the ownerand the issuer are the same.

An organization that issues certificates can establish a hierarchyof CAs. The root CA has a self-signed certificate. Each subordinateCA has a certificate that is signed by the next highest CA in thehierarchy. A certificate chain isthe certificate of a particular CA, plus the certificates of any higherCAs up through the root CA.

Securing your Java application with an SSL certificate can be extremely important. Fortunately, it is (usually) quite simple to do using Java Keytool. Most situations require that you buy a trusted certificate, but there are many cases when you can generate and use a self signed certificate for free.

When to Use a Keytool Self Signed Certificate

An SSL certificate serves two essential purposes: distributing the public key and verifying the identity of the server so users know they aren't sending their information to the wrong server. It can only properly verify the identity of the server when it is signed by a trusted third party. A self signed certificate is a certificate that is signed by itself rather than a trusted authority. Since any attacker can create a self signed certificate and launch a man-in-the-middle attack, a user can't know whether they are sending their encrypted information to the server or an attacker. Because of this, you will almost never want to use a self signed certificate on a public Java server that requires anonymous visitors to connect to your site. However, self signed certificates have their place:

Generate X.509 Certificate From Public Key In Java Pdf

Never use a self signed certificate on an e-commerce site or any site that transfers valuable personal information like credit cards, social security numbers, etc.

  • An Intranet. When clients only have to go through a local Intranet to get to the server, there is virtually no chance of a man-in-the-middle attack.
  • A Java development server. There is no need to spend extra cash buying a trusted certificate when you are just developing or testing an application.
  • Personal sites with few visitors. If you have a small personal site that transfers non-critical information, there is very little incentive for someone to attack the connection.

Just keep in mind that visitors will see a warning in their browsers (like the one below) when connecting to a server that uses a self signed certificate until it is permanently stored in their certificate store.

Generate a Self Signed Certificate using Java Keytool

Now that you know when to use a Keytool self signed certificate, let's create one using a simple Java Keytool command:

  1. Open the command console on whatever operating system you are using and navigate to the directory where keytool.exe is located (usually where the JRE is located, e.g. c:Program FilesJavajre6bin on Windows machines).
  2. Run the following command (where validity is the number of days before the certificate will expire):
    keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
  3. Fill in the prompts for your organization information. When it asks for your first and last name, enter the domain name of the server that users will be entering to connect to your application (e.g. www.google.com)

Generate X.509 Certificate From Public Key In Java Free

This will create a keystore.jks file containing a private key and your sparklingly fresh self signed certificate. Now you just need to configure your Java application to use the .jks file. If you are using Tomcat, you can follow our Tomcat SSL Installation Instructions.

For more information on creating a Java Keytool Self Signed Certificate, see the following links:

Originally posted on Sat Oct 30, 2010

Save

Save

Save

Comments are closed.