ホームページ  >  記事  >  バックエンド開発  >  PHP は OpenSSL を使用して証明書を生成し、サンプル コードを暗号化および復号化します。

PHP は OpenSSL を使用して証明書を生成し、サンプル コードを暗号化および復号化します。

怪我咯
怪我咯オリジナル
2017-07-12 09:56:342198ブラウズ

OpenSSL は、主要な暗号化アルゴリズム、一般的に使用されるキーと証明書のカプセル化管理機能、および SSL プロトコルを含む Secure Socket Layer 暗号化ライブラリであり、テストやその他の目的のための豊富なアプリケーションを提供します。

OpenSSL が重大なセキュリティ脆弱性にさらされた後、SSL プロトコルを通じて暗号化されたほとんどの Web サイトが OpenSSL と呼ばれるオープンソース ソフトウェア パッケージを使用していることが判明しました。 OpenSSL の脆弱性は https で始まる Web サイトに影響を与えるだけでなく、ハッカーはこの脆弱性を利用してパーソナル コンピュータに直接「Heartbleed」攻撃を仕掛けることもできます。分析によると、Windows 上の多数のソフトウェアが脆弱な OpenSSL コード ライブラリを使用しており、ユーザーのコンピュータ上のメモリ データをキャプチャするためにハッカーによって攻撃される可能性があります。

この記事では主に、PHP での証明書の生成と暗号化と復号化のための OpenSSL の使用方法を紹介します。必要な方は参考にしてください。

OpenSSL 拡張機能に依存します

/*加密解密*/
function authcode($string, $operation = 'E') {
  $ssl_public = file_get_contents(DATA_PATH."/conf/cert_public.key");
  $ssl_private = file_get_contents(DATA_PATH."/conf/cert_private.pem");
  $pi_key = openssl_pkey_get_private($ssl_private);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id
  $pu_key = openssl_pkey_get_public($ssl_public);//这个函数可用来判断公钥是否是可用的
  if(false == ($pi_key || $pu_key)) return '证书错误';
  $data = "";
  if($operation=='D'){
    openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密
  }else{
    openssl_public_encrypt($string,$data,$pu_key);//公钥加密
    $data = base64_encode($data);
  }
  return $data;
}
/*生成证书*/
function exportOpenSSLFile(){
  $config = array(
    "digest_alg"    => "sha512",
    "private_key_bits" => 4096,           //字节数  512 1024 2048  4096 等
    "private_key_type" => OPENSSL_KEYTYPE_RSA,   //加密类型
  );
  $res = openssl_pkey_new($config);
  if($res == false) return false;
  openssl_pkey_export($res, $private_key);
  $public_key = openssl_pkey_get_details($res);
  $public_key = $public_key["key"];
  file_put_contents(DATA_PATH."/conf/cert_public.key",$public_key);
  file_put_contents(DATA_PATH."/conf/cert_private.pem",$private_key);
  openssl_free_key($res);
}

以上がPHP は OpenSSL を使用して証明書を生成し、サンプル コードを暗号化および復号化します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。