Use this for simple public/private key encryption.<?phpdefine("OPEN_SSL_CONF_PATH", "/usr/share/ssl/openssl.cnf");define("OPEN_SSL_CERT_DAYS_VALID", 365);define("OPEN_SSL_PASSPHRASE", "lkdfjbjeyrasdfvkajwdeblsolkdkdjfbvzslalsmdbfvksb");define("OPEN_SSL_PUBKEY_PATH", "/docs/domains/mywebsite.com/docs/key.pem"); class OpenSSL { public $privatekey; public $publickey; public $csr; public $crypttext; public $ekey; public function encrypt($plain) { $publickey = openssl_get_publickey(is_file(OPEN_SSL_PUBKEY_PATH)? file_get_contents(OPEN_SSL_PUBKEY_PATH) : OPEN_SSL_PUBKEY_PATH); openssl_seal($plain, $crypttext, $ekey, array($publickey)); openssl_free_key($publickey); $this->crypttext = $crypttext; $this->ekey = $ekey[0]; } public function decrypt($crypt, $privatekey, $ekey="") { $privatekey = openssl_get_privatekey((is_file($privatekey)? file_get_contents($privatekey) : $privatekey), OPEN_SSL_PASSPHRASE); openssl_open($crypt, $plaintext, $ekey, $privatekey); openssl_free_key($privatekey); return $plaintext; } public function do_csr( $countryName = "UK", $stateOrProvinceName = "London", $localityName = "Blah", $organizationName = "Blah1", $organizationalUnitName = "Blah2", $commonName = "Joe Bloggs", $emailAddress = "openssl@domain.com" ) { $dn = array( "countryName" => $countryName, "stateOrProvinceName" => $stateOrProvinceName, "localityName" => $localityName, "organizationName" => $organizationName, "organizationalUnitName" => $organizationalUnitName, "commonName" => $commonName, "emailAddress" => $emailAddress ); $config = array( "config" => OPEN_SSL_CONF_PATH ); $privkey = openssl_pkey_new(); $csr = openssl_csr_new($dn, $privkey, $config); $sscert = openssl_csr_sign($csr, null, $privkey, OPEN_SSL_CERT_DAYS_VALID, $config); openssl_x509_export($sscert, $this->publickey); openssl_pkey_export($privkey, $this->privatekey, OPEN_SSL_PASSPHRASE, $config); openssl_csr_export($csr, $this->csr); } }?>