答えて
これはSnapのsnap-server
パッケージでは利用できません。これはあなたのサーバーの動作方法を前提としています。
Buuuuutフォークするか、別のモジュールとしてビルドするのは難しくありません(ただし、必要な内部値がエクスポートされないため、コードをコピーする必要があります)。 bindHttps
、located in Snap.Internal.Http.Server.TLSは、ターゲットとするものです。この関数は、HsOpenSSL
ライブラリからのOpenSSL.Sessionへの呼び出しのラッパーです。このライブラリ自体はOpenSSLライブラリのラッパーです。
私たちのためにラッキーOpenSSLはクライアント証明書を完全にサポートしています。 verification modeをSSL_VERIFY_PEER
に設定するだけです。あなたはあまりにもバイブルすることができます他のノブがあります。また、実際にクライアント証明書を検証するために証明書チェーンをインストールする必要があります。信頼のチェーンとそのすべてのジャズ。参考までに、nginx does itを参照してください。
なお、この機能は、としてexposedであり、HsOpenSSL
である。スナップのbindHttps
の定義にctx :: SSLContext
が存在することがわかります。あなたがしなければならないのは、そのモジュールをコピーまたはフォークして、あなたの呼び出しを導入することだけです。
それは、この(未検証のコードの警告)のようになります。
± % diff -u /tmp/{old,new}
--- /tmp/old 2016-04-11 11:02:42.000000000 -0400
+++ /tmp/new 2016-04-11 11:02:56.000000000 -0400
@@ -19,6 +19,7 @@
ctx <- SSL.context
SSL.contextSetPrivateKeyFile ctx key
+ SSL.contextSetVerificationMode ctx (SSL.VerifyPeer True True (Just (\_ _ -> return True)))
if chainCert
then SSL.contextSetCertificateChainFile ctx cert
else SSL.contextSetCertificateFile ctx cert
最初のブール値にはクライアント証明書が存在しない場合に失敗するOpenSSLを伝えます。 2番目のブール値は、クライアント証明書が最初の要求でのみ必要であり、再交渉では必要なくなったことをOpenSSLに伝えます。 3番目の値はコールバックです。コールバックでTrueを返すだけです。とにかく、それはnginx doesです。
- 1. boost :: asio SSLを使用してクライアント証明書を確認する方法は?
- 2. Nginx; OCSPを使用してSSLクライアント証明書を確認する方法
- 3. ASP.NET Webサービスで証明書を使用してクライアントを認証する方法
- 4. keytoolを使用して証明書のキーサイズを確認する方法は?
- 5. opensslを使用してP12証明書を確認する方法は?
- 6. X509証明書を使用してSOAPリクエストを確認する
- 7. 信頼できる内部CA証明書を使用してクライアント証明書を検証する方法は?
- 8. PhoneGapでクライアント証明書を使用した認証
- 9. サービスのみのWCF証明書認証(クライアント証明書なし)
- 10. gnutlsにemacsでクライアント証明書を使用する方法24
- 11. LibCUrlを使用したクライアント証明書
- 12. WCF - 証明書を使用してメッセージセキュリティを使用してクライアントを認証する
- 13. クライアント証明書/相互認証を使用してWebサービスを呼び出す方法は?
- 14. 証明書ストアにクライアント証明書を使用していません
- 15. Windows証明書ストアで証明書を明確に認識
- 16. Cocoa Touchでウェブサイト証明書を確認する方法は?
- 17. HTTP(HTTPSを使用しない)を介したクライアント証明書の認証
- 18. Pythonの企業認証局を使用したHTTPS証明書の確認
- 19. 証明書の確認
- 20. UIWebViewのクライアント証明書認証iOS
- 21. HTTPWebRequestでクライアント証明書認証要求を検出する方法は?
- 22. クライアント認証に.NET Compact FrameworkでX509証明書を使用するHTTPRequest
- 23. iPhoneでクライアント証明書を使用した認証ができません
- 24. SSLとクライアント証明書認証を使用した安全なASP.NET MVCアプリケーション
- 25. クライアント証明書認証を使用したWebサービスへの接続
- 26. クライアント証明書認証を使用した.NET Webサービスの作成
- 27. openssl C APIを使用してpkcs#12証明書(.PXF)のパスワードを確認する方法は?
- 28. クライアント証明書と基本認証を持つWCFクライアント
- 29. XHRを使用してクライアント証明書を送信
- 30. Java SOAPクライアントJAX-WS:証明書の使用方法
もっと一般的には、Haskell Webフレームワークが証明書ベースのクライアント認証をサポートしているかどうかを知りたいと思います。 –
これは非回答ですが、回避策として、nginxを使用して証明書を検証し、ヘッダーにDNを渡すことができます。 –