2013-03-23 116 views
1

如何從Ruby Web服務訪問客戶端X.509證書?客戶端正在傳遞客戶端證書,瀏覽器正在爲我進行身份驗證,但我還想在Ruby代碼中查看證書。如何從Ruby Web服務(不是Rails)訪問客戶端X.509證書?

這不是Rails。例如,我正在使用Sinatra尋找答案。而且,從一個網絡服務器,如nginx或lighttpd。

+2

你寫了什麼,或者你只是希望有人有一個工作樣本?我們希望您能夠展示您搜索的內容,爲什麼它沒有幫助,或者您編寫的代碼以及爲什麼不起作用。 – 2013-03-23 05:01:36

+1

我會考慮Openssl的驗證功能。 – 2013-03-23 21:47:28

+0

請參閱http://stackoverflow.com/questions/14173354/how-to-mimic-browser-x509-client-certificate-verification-without-access-to-http。如前所述,Nginx/Apache服務器將負責處理這個問題。在它的配置中,你可以做一些事情來傳遞這些頭文件,然後使用OpenSSL(或其他)來處理證書。 – iain 2013-03-24 12:57:02

回答

1

使用Apache Web服務器偵聽端口443與SSL配置,作爲反向代理運行的末日應用程序瘦服務器,例如,我可以將這些添加到我的Apache虛擬主機配置:

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 

然後從我的西納特拉的代碼,我可以找到在機架環境中,這些值,例如:

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

我沒有完整的客戶端證書,因爲我有阿帕奇驗證證書是確定。

相關問題