問題タブ [gnutls]
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.
linux - cryptodev-linux の openssl サポート
openssl には (eng_cryptodev.c を介して) cryptodev-linux サポートが付属しているようです。openssl をダウンロードすると、eng_cryptodev.c ファイルがデフォルトで利用可能になります。
以下のリンクは、openssl サポートの eng_cryptodev.c について言及しています。
http://repo.or.cz/w/cryptodev-linux.git/commitdiff/56cc4e3b8b761cb34f928f4eee59755d1f0afc53
注:openssl ソースで利用可能な eng_cryptodev.c ファイルにいくつかの追加の変更が加えられているようです。
最近、cryptodev-linux にもいくつかの変更/パッチが利用できるようです。以下に参考情報を示します。
http://rt.openssl.org/Ticket/Display.html?id=2770&user=guest&pass=guest
パッチは次のとおりです。
0001-cryptodev-Fix-issue-with-signature-generation.patch 0002-cryptodev-allow-copying-EVP-contexts.patch
注: patch -p0 < 0001/2-*.patch は正しく機能しないため、手動で適用します。
私の理解が間違っている場合はお知らせください。
ブラジル、
& サヌマラ
python - context.use_certificate_chain_file 使用時の「キー値の不一致」
使用するcontext.use_certificate_chain_file
と、キー エラーが発生します (openssl.Context Python)。エラーは次のとおりです。
キー値の不一致を言っていますが、チェーンがそれに影響するとは思いません。
context.use_certificate_chain_file 行にコメントを付けると、完全に機能します (ただし、ブラウザーで ssl 検証エラーが発生します)。
これが私のコードのスニペットです:
エラーが発生する理由はありますか?
port - GnuTLS を使用して特定の IP アドレスとポートに接続する方法
TCP クライアントとサーバーがあり、GnuTLS を使用してセキュリティ層を実装したいと考えています。GnuTLS のドキュメントを読みましたが、特定の IP アドレスやポートへの接続については触れていません。彼らは、証明書要求の生成に使用できる certtool テンプレートに IP アドレスを設定します。
しかし、私の場合、クライアントとして、UDP セッション中にサーバー アドレスを取得し、TCP ソケットをそれに接続します。
ドキュメントに記載されている例には、次の行があります。
(session, GNUTLS_NAME_DNS, "my_host_name", strlen("my_host_name"));
...サーバーアドレスを取得する責任があると私は信じています。
linux - GNUTLS クライアント サーバー TLS ハンドシェイク エラー
gnutls が提供する 2 つのサンプル例を使用しています。
- 変更なしの「X.509 証明書をサポートする単純なクライアントの例」
「X.509 認証を使用したエコー サーバー」。certtool と自己署名証明書「cert.pem」を使用して秘密鍵「key.pem」を生成し、例で使用しています。
サーバーは正常に動作しています...出力は次のとおりです。
サーバー準備完了。ポート「5556」をリッスンしています
しかし、クライアントの例を実行すると、次のエラーが返されます。
ハンドシェイクに失敗した GnuTLS エラー: TLS 接続が適切に終了されませんでした
そしてサーバーは以下を返します:
connection from 127.0.0.1, port 58587 Handshake has failed (リクエストが無効です。)
何が問題ですか?クライアントの例を変更する必要がありますか? そうでない場合、TLS ハンドシェイク プロセスと、クライアントとサーバー間で送信されるデータを確認するにはどうすればよいですか?
c - GnuTLS 拡張機能
このサイト ( http://www.wikinology.cn/wiki/GnuTLS_Extension_Development_Notes ) で定義されているように、gnutls を使用して独自の TLS 拡張機能を追加しようとしたので、順を追って説明します。
注:私はgnutls-3.3.14と拡張機能を使用しました:SupportedAndAcceptedCertType.
1- m4/hooks.m4 :
2- gnutls_int.h:
GNUTLS_EXTENSION_SupportedAndAcceptedCertType=9999
3- gnutls_extensions.c:
/ * テスト * /
/ * テスト終了 */
4- ext ファイルに SupportedAndAcceptedCertType.h を作成します。
5- ext ファイルに SupportedAndAcceptedCertType.c を作成します。
6- Makefile.am:
現在、ウェブサイト「 http://www.wikinology.cn/wiki/GnuTLS_Extension_Development_Notes 」に基づいており、現在、「テンプレートファイルの更新:
これらのファイルを更新する必要があります:
lib/Makefile.in
lib/includes/gnutls/gnutls.h.in
どうすればこのステップを実行できますか? このステップの後、拡張機能はハンドシェイク (ClientHello および ServerHello) で私の拡張機能を確認できますか?
ありがとう
ssl - _asn1_ordering_set_of による並べ替えによる署名検証の失敗
GnuTLS 3.4.1を使用しています。内部に一連のシーケンスを含む x509 証明書があります。証明書は、スマート カードにそのように保存されます。
GnuTLS は function を介してシーケンスを再配置しており_asn1_ordering_set_of
、これが検証の失敗を引き起こしているようです。
シーケンスは次のようになります。
OpenSSL (およびおそらく Java PKCS11 プロバイダー) は、この構造をそのままロードします。証明書のロード時の GnuTLS は、この構造を に分類し_asn1_ordering_set_of
ます。次のようになります。
GnuTLS がシーケンスのセットをソートするのはなぜですか? GnuTLS のバグなのか、それとも他のライブラリが単に順序付けを省略しているのか、どのようにすればよいのでしょうか?