Sample code for 30+ languages & platforms
Java Requires Chilkat v10.1.2+

SSL Client Certificate

See more Socket/SSL/TLS Examples

Demonstrates how to connect to an SSL server using a client-side certificate, send a simple message, receive a simple response, and disconnect.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.CertStore;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Socket;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Socket socket = new Socket();

        // Create an instance of a certificate store object, load a PFX file,
        // locate the certificate we need, and use it for signing.
        // (a PFX file may contain more than one certificate.)
        CertStore certStore = new CertStore();
        // The 1st argument is the filename, the 2nd arg is the
        // PFX file's password:
        try {
            certStore.loadPfxFile("chilkat_secret.pfx", "secret");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Find the certificate by the subject common name:
        JsonObject jsonCN = new JsonObject();
        jsonCN.updateString("CN", "cert common name");

        Cert cert = new Cert();
        try {
            certStore.findCert(jsonCN, cert);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        socket.setSslClientCert(cert);

        boolean ssl = true;
        int maxWaitMillisec = 20000;

        // The SSL server hostname may be an IP address, a domain name,
        // or "localhost".  You'll need to change this:
        String sslServerHost = "123.123.88.88";
        int sslServerPort = 8123;

        // Connect to the SSL server:
        String receivedMsg;
        try {
            socket.connect(sslServerHost, sslServerPort, ssl, maxWaitMillisec);

            // Set maximum timeouts for reading an writing (in millisec)
            socket.setMaxReadIdleMs(20000);
            socket.setMaxSendIdleMs(20000);

            // Send a "Hello Server! -EOM-" message:
            socket.sendString("Hello Server! -EOM-");

            // The server (in this example) is going to send a "Hello Client! -EOM-"
            // message.  Read it:
            receivedMsg = socket.receiveUntilMatch("-EOM-");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Close the connection with the server
        // Wait a max of 20 seconds (20000 millsec)
        socket.closeConnection(20000);

        System.out.println(receivedMsg);
    }
}