Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

SFTP use Cert's Private Key from PFX (.pfx/.p12)

See more SFTP Examples

Demonstrates how to use the private key associated with a certificate from a .pfx/.p12 file.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.PrivateKey;
import com.chilkatsoft.chilkat2.SFtp;
import com.chilkatsoft.chilkat2.SshKey;

public class ChilkatExample {

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

        Cert cert = new Cert();

        String pfxFilepath = "qa_data/pfx/my.pfx";
        String pfxPassword = "secret";

        // A PFX typically contains certificates in the chain of authentication.
        // The Chilkat cert object will choose the certificate w/
        // private key farthest from the root authority cert.
        // To access all the certificates in a PFX, use the
        // Chilkat certificate store object instead.
        try {
            cert.loadPfxFile(pfxFilepath, pfxPassword);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get the private key.
        PrivateKey privKey = new PrivateKey();
        String privKeyPem;
        try {
            cert.getPrivateKey(privKey);

            privKeyPem = privKey.getPkcs8Pem();
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        SshKey sshKey = new SshKey();
        try {
            sshKey.fromOpenSshPrivateKey(privKeyPem);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Connect to an SSH/SFTP server
        SFtp sftp = new SFtp();
        try {
            sftp.connect("sftp.example.com", 22);

            // Authenticate with the SSH server using a username + private key.
            // (The private key serves as the password.  The username identifies
            // the SSH user account on the server.)
            sftp.authenticatePk("mySshLogin", sshKey);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("OK, the connection and authentication with the SSH server is completed.");

        // This example is only to show the connection + authentication using a private key associated with a certificate in the Windows certificate store...
    }
}