1

Ruby Web サービスからクライアント X.509 証明書にアクセスするにはどうすればよいですか? クライアントはクライアント証明書を渡しており、ブラウザがそれを認証しているのは問題ありませんが、Ruby コードで証明書も確認したいと考えています。

これは Rails ではありません。たとえば、シナトラを使用して答えを探しています。そして、nginx や lighttpd などの Web サーバーから。

4

1 に答える 1

1

たとえば、Sinatra アプリを実行するシン サーバーへのリバース プロキシとして、SSL が構成されたポート 443 でリッスンする Apache Web サーバーを使用して、これらを Apache VirtualHost 構成に追加できます。

RequestHeader set SSL-Client-M-Serial %{SSL_CLIENT_M_SERIAL}s
RequestHeader set SSL-Client-S-DN %{SSL_CLIENT_S_DN}s 
RequestHeader set SSL-Client-I-DN %{SSL_CLIENT_I_DN}s 

次に、Sinatra コードから、Rack 環境でこれらの値を見つけることができます。たとえば、次のようになります。

puts "#{request.env['HTTP_SSL_CLIENT_S_DN']}"

私は完全なクライアント証明書を持っていませんが、Apache で証明書を検証しているので問題ありません。

于 2013-04-25T00:11:36.657 に答える