問題タブ [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 - TYPO3 CMS 7.4.0 のインストール中に PHP OpenSSL 拡張が機能しない
TYPO3 CMS 7.4.0 のインストール中に、次のメッセージが表示されます。
PHP OpenSSL 拡張機能が機能しない テスト用の新しい秘密鍵を作成しようとしているときに問題が発生しました。PHP OpenSSL 拡張機能の統合と、それが正しくインストールされているかどうかを確認してください。
勝利 8.1 x64; PHP バージョン 5.6.12 VC11 x86 スレッド セーフ。アパッチ 2.4.16 VC11 Win32
同様の問題について読み、推奨されるすべてのことを行いましたが、問題はまだここにあります。
私がやったことは次のとおりです。
- php.ini でコメント解除
extension=php_openssl.dll
- openssl が有効になっていることを phpinfo() でチェック: http://i.imgur.com/Et00jpY.png
- 値を持つ環境変数「OPENSSL_CONF」を追加しました: http://i.imgur.com/wf1yCYe.png
パスを「openssl.exe」に設定します。
...\typo3\sysext\core\Configuration\DefaultConfiguration.phpの $TYPO3_CONF_VARS['SYS']['binSetup']を 'openssl=C:\Apache24\bin\openssl.exe' に設定します。
C:\Apache24\bin\ を環境変数 PATH に追加
Apacheを再起動/再起動したPC。
そして、何も助けませんでした。
- 他に何をチェックすることをお勧めしますか?
- cmd を使用して関数を実行し、
openssl_pkey_new()
openssl に問題があるかどうかを確認する方法は?
編集:
公式phpサイトからopenssl.installationマニュアルを注意深く読みました(申し訳ありませんが、ここでは評判が悪いため、2つ以上のリンクを投稿できません^^)、何も役に立ちませんでした
このスクリプトを実行すると:
error_reporting(E_ALL);$test = openssl_pkey_new();echo $test;
ブラウザに空白のページが表示されます (php.ini で「display_errors = On」および「display_startup_errors = On」の場合)
- XAMPPをインストールしました。
XAMPP コントロール パネルのシェルで openssl コマンドを実行すると、
警告: 構成ファイルを開けません: C:/xampp/apache/bin/openssl.cnf OpenSSL>
openssl.cnf は C:/xampp/apache/conf/openssl.cnf にありますが、PHP 変数には_SERVER["OPENSSL_CONF"] C:/xampp/apache/conf/openssl.cnf
CMD opensslコマンドで
C:\WINDOWS\system32>openssl 警告: 構成ファイルを開けません: D:\tmp\openssl-1.0.1p\vc11\x86/openssl.cnf OpenSSL>
libeay32.dll と ssleay32.dll は両方ともバージョン 1.0.1.16 であり、apache/bin と /php で同じです
SetEnv OPENSSL_CONF "C:/xampp/apache/conf/openssl.cnf"
httpd-xampp.conf にあります
php - PHP RSA キーの作成
PHP で作成および使用される RSA キーの作成/使用に問題があります。問題は、(公開および秘密)キーを異なるサーバー間で交換する必要があることです(たとえば、ユーザーアカウントが移動した場合)。
現在、PHP の openssl-lib は、キーが作成される形式に関する詳細情報を提供していません。http://php.net/manual/en/function.openssl-pkey-export.phpの最新のドキュメントには、「PEM 形式」であるとだけ記載されていますが、PKCS#1 であるか、またはPKCS#8
さらに、次のコードが示すように、秘密鍵 PEM のヘッダーとトレーラーは PHP のバージョンによって異なります。
異なるものを出力します:
PHP v 5.4:
PHP v5.5:
PHP v 5.6:
そのため、使用している PHP のバージョンに基づいて、秘密鍵のヘッダー/トレーラーが変更されます。これは実際の問題ではありませんが、結局のところ、"RSA" を使用してキー ヘッダーを作成するシステムは、たとえば openssl_sign() の場合、"RSA" を使用せずにユーザー キーを作成することはできません。 「提供されたキーを秘密キーに強制できませんでした」というエラー...そして、これが厄介なところです。
https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pemによると、ヘッダーに「RSA」を含む秘密鍵の PEM 形式とそれらの形式を区別する必要があります。なし、PKCS#1 および PKCS#8 である、つまり、アルゴリズムなどに関する追加情報があるかどうか。
このため、深刻な問題に直面しています。PHP5.6 用に作成された同じソフトウェアは、PHP5.5 では実行できません。5.5 ヘッダーを 5.6 互換ヘッダーに手動で置き換えることで回避策を使用できますが、これは単なる「汚いハック」です。これに対処する「良い」方法はありますか?
セットアップ時に、この置換コードは秘密鍵を作成し、ヘッダーを抽出して「記憶」しようとします。実行時に使用されるすべてのキーがチェックされます。見つかったヘッダーが「ローカル」ヘッダーに適合しない場合は、交換する必要があります。
しかし、どの形式を使用するかを設定できる、ある種の設定オプション (まだ見つけることができていません) があると思いますか?
次に、より興味深い質問: openssl によって正確に作成される形式は何ですか? PKCS#1? PKCS#8? これも設定可能ですか?
php-openssl - PHP Openssl 拡張機能でエンジンを設定するには?
コードで openssl_sign() を呼び出して、PHP Openssl 拡張機能を使用しています。
私の Openssl は 3 つの異なるエンジンを使用するように構成されています (構成は「/etc/ssl/openssl.cnf」にあります)。
デフォルトのエンジンはカスタム エンジンに設定されており、コマンド ライン (openssl rsautl -sign) から RSA Sign を呼び出すと、カスタム エンジンが使用されます。
ただし、PHP Openssl 拡張機能を使用すると、「通常の」Openssl エンジンのみが呼び出されます。
拡張機能でカスタム エンジンを使用するように強制できますか?
php - Windows での安全な FTP 接続
公式のphpドキュメントには次のように書かれています:
「ftp_ssl_connect() は、ftp モジュールと OpenSSL サポートの両方が静的に php に組み込まれている場合にのみ使用できます。つまり、Windows では、この関数は公式の PHP ビルドでは未定義になります」
とにかくxamppでこの関数を使用する方法はありますか、または静的OpenSSLを使用した他のWindows phpソリューションを知っていますか?
php - 別の拡張関数を呼び出す PHP 拡張機能
私は PHP 拡張機能を作成しており、拡張機能から openssl 拡張機能を呼び出したいと考えていました。具体的には、拡張機能内から openssl_x509_read 関数を呼び出したいと考えています。出来ますか?そして、どうすればいいですか?
java - X509 証明書を使用して SOAP 要求を検証する
私はSOAPサーバーを持っています。サーバーで受信している SOAP 要求にはws セキュリティ ヘッダーがあります。以下は、要求 XML の主なノードです。
- BinarySecurityToken (X509PKIPathv1 証明書)
- Digest メソッド
- ダイジェスト値
- 署名値
SecurityTokenReference
データ(クライアントがSOAPボディで送信するデータ)
クライアント (要求の送信者) から提供された証明書 (.cer ファイル) を使用して要求を検証する必要があります。
リクエストを検証する手順は何ですか? コンセプトを説明してください。これを行うためのライブラリはありません。長い調査の結果BinarySecurityToken
、base64_encode($certFile)
$certFile は要求者の証明書であることがわかりました。今DigestValue
、何とどのように合わせるかを研究しています。