問題タブ [php-openssl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP で openssl_private_encrypt を使用してバイナリ ファイルを暗号化する
Symfony フレームワークを使用して秘密鍵で暗号化したい。非バイナリ ファイルでは機能しますが、バイナリ ファイルでは機能しません。
mysql - Google Cloud SQL SSL がピア証明書の検証に失敗する
PHP 5.6 で MySQL を使用する際に問題が発生しました。3 日間にわたって PHP、OpenSSL、PHP 上の MySQLnd ドライバーをデバッグし、Ubuntu 14.04 マシンで mysql_client を試した結果、Google Cloud SQL SSL 証明書は機能しないという結論に達しました。 PHP 5.6 以降。
まず、Google Cloud は優れたサービスであり、最新の暗号化が Google エコシステム全体に適用されています。しかし、Google Cloud SQL SSL サーバーの証明書にはありえない共通名が含まれているという小さな問題があり、使用できませんでした。
Google Cloud SQL Server (またはピア) 証明書には、次のような共通名 (CN) があります。
さらに悪いことに、PHP 5.6 以降では、すべての暗号化されたクライアント ストリームが必須のピア証明書検証を通過します。(リンク: PHP 5.6.x での OpenSSL の変更点)。私は PHP Data Objects (PDO) 拡張機能を使用します。これは、ネイティブ ドライバー MySQLnd を使用してすべての MySQL ビジネスを処理します。これは、ネイティブ PHP ストリームを使用してこれらの接続を処理します。
PHP の MySQLnd ソース コード (リンク: GitHub の MYSQLnd ドライバー コード)、MySQLnd 構成オプションを調べて、この特定の MySQLND で SSL ピア検証コードを無効にしてみました。無駄に。
したがって、PHP 5.6 で MySQL 接続に SSL を使用する必要がある場合はどうすればよいですか?
あなたの応答は大歓迎です!
php - openssl_random_pseudo_bytes PHP 関数
openssl_random_pseudo_bytes
PHP 関数の読み取り不能文字を出力します。
この関数を使用して、一意の文字列を生成します。
次のような出力:
php - アップロードされたファイルが有効な PEM ファイルであることの検証
拡張子の検証に頼らずに、ユーザーがアップロードしたファイルが有効な pem ファイルであることを検証する効果的でエレガントな方法を見つけようとしています。誰でもこれを達成したり、アイデアを持っていますか?
php - openSSL を使用して PHP で (大きな) ファイルを暗号化する
AESを使用してPHPで(大きな)ファイルを暗号化しようとしていますが、McryptとOpenSSLの使用を検討しました.問題は、これまでに見つけたすべてのソリューションが文字列を暗号化するだけであり、暗号化しようとしているファイルが最大PHP のメモリ制限 (残念ながらこれを高く設定することはできません)、どうすればこれを達成できますか?
php - 暗号で保護された一意の ID
PHP を使用して、暗号的に安全な一意の uuid を生成したいと考えています。
uniqid() は一意ではあるがセキュアではない ID を提供し、openssl_random_pseudo_bytes() はセキュアではあるが一意ではない ID を提供します。2つ(次のコード)の組み合わせは適切なアプローチですか、それともより良い解決策がありますか?
php - C/C++ で生成された RSA OpenSSL キーを PHP で復号化できますか?
多くの状況で、セキュリティ ソフトウェアは (デスクトップ) アプリケーションと Web インターフェイス間の相互作用を伴います。(RSA) 非対称暗号化には、OpenSSL のC ライブラリ(現在のバージョン 1.0.2d) を使用し、openssl PHP ライブラリを使用します。
すべての標準的なもの:
- プライベート暗号化 (C++) データとパブリック復号化 (PHP)
- 公開暗号化 (C++) データと非公開復号化 (PHP)
動作します。また、その逆: PHP -> C++ および C++ -> PHP
さらに、PHP で暗号化された秘密鍵を生成し、C/C++ でその鍵を復号化することもできます。しかし、その逆ではありません。C++ で生成および暗号化された秘密鍵を PHP で復号化したいのです。注: これは、キーを使用したデータの暗号化/復号化とは異なります。
問題は、C OpenSSL が秘密鍵を暗号化する方法にあるようです。キーが暗号化されるアルゴリズム (この場合は aes-256-cbc) を知るだけでは十分ではありません。パスワードも拡張されます。キーが OpenSSL によって暗号化される方法は、時間の経過とともに変化しました。それが今どのように見えるかの例を挙げます。
OpenSSL C/C++ で生成された秘密鍵のヘッダーの一部は次のようになります。
一方、openssl PHP で生成された pem エンコードされた秘密鍵のヘッダーの一部は次のようになります。
phpseclibなどのいくつかの PHP 拡張機能を使用しようとしましたが、C OpenSSL で生成された秘密鍵を PHP プログラムでまだ使用できません。公開鍵は暗号化されていないため、2 つの言語間で問題なく交換できます。
C OpenSSL で RSA キーを生成するには、EVP_PKEY 構造を使用します。
2015 年 8 月 12 日に著者が編集
neubert への返信として、OpenSSL ユーティリティ「openssl genpkey」を使用して暗号化された秘密 RSA キーを生成しました。
したがって、キーの長さは 512 ビットで、パスワードは「1234」です。
暗号化されていない形式のキーを取得するには、「openssl pkey」を使用しました。
Windows では、openssl 実行可能ファイルは「openssl.exe」と呼ばれます。
キーは次のとおりです。
と