- java.lang.Object
-
- org.omnifaces.utils.security.Certificates
-
public final class Certificates extends Object
Collection of utility methods for working with Certificates and SSL.- Author:
- Arjan Tijms
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidcreateJKSKeyStore(Path path, char[] password, PrivateKey privateKey, X509Certificate certificate)Creates a JKS key store on disk initialized with the given private key and certificate, at the given location and with the given password.static voidcreateJKSTrustStore(Path path, char[] password, X509Certificate[] certificates)Creates a JKS key trust on disk initialized with the given certificates, at the given location and with the given password.static StringcreateTempJKSKeyStore(PrivateKey privateKey, X509Certificate certificate)Creates a temporary JKS key store on disk initialized with the given private key and certificate and the well known default password "changeit" (without quotes).static StringcreateTempJKSTrustStore(X509Certificate[] certificates)Creates a temporary JKS trust store on disk initialized with the given certificates and the well known default password "changeit" (without quotes).static KeyPairgenerateRandomRSAKeys()Generates a random RSA keypair with a keysize of 2048 bits.static X509Certificate[]getCertificateChainFromServer(String host, int port)Attempts to query a server for the X509 certificate chain it will use in the SSL handshake.static X509Certificate[]getCertificateChainFromServer(String host, int port, int timeout)Attempts to query a server for the X509 certificate chain it will use in the SSL handshake.static StringgetHostFromCertificate(X509Certificate[] serverCertificateChain)Extracts the host name from the first X509 certificate in a chain.static voidsetSystemTrustStore(String path)Sets the system-wide (JVM) trust store to the one referenced by the given path.static voidsetSystemTrustStore(String path, String password)Sets the system-wide (JVM) trust store to the one referenced by the given path.
-
-
-
Method Detail
-
getCertificateChainFromServer
public static X509Certificate[] getCertificateChainFromServer(String host, int port)
Attempts to query a server for the X509 certificate chain it will use in the SSL handshake.This method uses a default timeout of 15 seconds.
- Parameters:
host- the server's hostport- the server's port- Returns:
- The certificate chain, or null if it could not be obtained.
-
getCertificateChainFromServer
public static X509Certificate[] getCertificateChainFromServer(String host, int port, int timeout)
Attempts to query a server for the X509 certificate chain it will use in the SSL handshake.- Parameters:
host- the server's hostport- the server's porttimeout- the socket timeout, in milliseconds.- Returns:
- The certificate chain, or null if it could not be obtained.
-
getHostFromCertificate
public static String getHostFromCertificate(X509Certificate[] serverCertificateChain)
Extracts the host name from the first X509 certificate in a chain.This method assumes RFC 2253 format of the distinguished named, and will take the CN name to be representative of the host name.
- Parameters:
serverCertificateChain- the chain from which to extract the host name- Returns:
- the CN from the first certificate corresponding to the host name
-
generateRandomRSAKeys
public static KeyPair generateRandomRSAKeys()
Generates a random RSA keypair with a keysize of 2048 bits.- Returns:
- a random RSA keypair
-
createTempJKSKeyStore
public static String createTempJKSKeyStore(PrivateKey privateKey, X509Certificate certificate)
Creates a temporary JKS key store on disk initialized with the given private key and certificate and the well known default password "changeit" (without quotes).- Parameters:
privateKey- the key used to initialize the key storecertificate- the certificate used to initialize the key store- Returns:
- the path on disk to the temporary key store
-
createJKSKeyStore
public static void createJKSKeyStore(Path path, char[] password, PrivateKey privateKey, X509Certificate certificate)
Creates a JKS key store on disk initialized with the given private key and certificate, at the given location and with the given password.- Parameters:
path- the full path (directory and file name) where the key store is createdpassword- the password used to protect the key storeprivateKey- the key used to initialize the key storecertificate- the certificate used to initialize the key store
-
createTempJKSTrustStore
public static String createTempJKSTrustStore(X509Certificate[] certificates)
Creates a temporary JKS trust store on disk initialized with the given certificates and the well known default password "changeit" (without quotes).- Parameters:
certificates- the certificates used to initialize the trust store- Returns:
- the path on disk to the temporary trust store
-
createJKSTrustStore
public static void createJKSTrustStore(Path path, char[] password, X509Certificate[] certificates)
Creates a JKS key trust on disk initialized with the given certificates, at the given location and with the given password.- Parameters:
path- the full path (directory and file name) where the trust store is createdpassword- the password used to protect the trust storecertificates- the certificates used to initialize the trust store
-
setSystemTrustStore
public static void setSystemTrustStore(String path)
Sets the system-wide (JVM) trust store to the one referenced by the given path.The default password "changeit" is used.
- Parameters:
path- the path on disk where the trust store is located
-
setSystemTrustStore
public static void setSystemTrustStore(String path, String password)
Sets the system-wide (JVM) trust store to the one referenced by the given path.The default password "changeit" is used.
- Parameters:
path- the path on disk where the trust store is locatedpassword- the password to access the trust store
-
-