nginx 針對https提供ssl/tls配置功能的支援,這些功能由openssl庫提供,除了原生的nginx模組能對https提供支援之外,openresty也同樣在nginx原生的基礎上 提供了lua指令碼層面對https進行配置與處理的功能。
nginx openssl模組在ngx_http_ssl_module實現,實際與openssl進行互動的模組還是在ngx_event_openssl以及ngx_event_openssl_stapling模組中。目前nginx可支援的ssl/tls版本如下: sslv2 sslv3 tlsv1 tlsv1.1 tlsv1.2 tlsv1.3,具體配置可支援的版本可以自由進行設定。openssl模組配以配置openssl的開啟以及關閉,通常https配置的埠一般是443。
目前的ssl模組支援配置多個ssl證書及整數的秘鑰。通過ssl_certificate配置ssl證書,通過ssl_certificate_key配置ssl秘鑰。當然也支援直接將密碼資訊存放在檔案中,通過nginx配置實現密碼資訊的讀取及設定,這個功能由ssl_password_file配置指令實現。
pem證書資訊設定可以使用ssl_dhparam配置pem證書資訊;同樣,ssl加密所用的橢圓曲線的引數資訊可以通過ssl_ecdh_curve指令進行配置,這裡可以簡單地介紹ssl加密演算法為什麼名為ecdh,ecdh是elliptic-curve和diffie-hellman的縮寫,openssl只支援有名稱的橢圓曲線(named curves),在nginx模組中預設配置的曲線是prime256v1的曲線演算法。
nginx提供對ssl支援版本的設定,可選擇的範圍是sslv2、sslv3、tlsv1、tlsv1.2、tlsv1.3,如果不設定支援的協議版本,預設使用的範圍是tlsv1、tlsv1.1、tlsv1.2。ssl_ciphers可以設定openssl所使用的加密演算法套件。而ssl部分使用的緩衝buffer大小也可以通過配置設定,預設的大小為16k。
同樣,nginx ssl模組提供了雙向的安全驗證功能,可以配置來驗證客戶端,開啟及關閉雙向驗證功能的指令是ssl_verify_client;而雙向驗證的級別同樣也能進行設定,ssl_verify_depth可以滿足。對於客戶端的證書,在nginx ssl模組中可以通過ssl_client_certificate設定。而受信任的ca證書通過ssl_trusted_certificate進行設定。ssl_prefer_server_ciphers的開關可以使用server伺服器的偏好來使用openssl的加密演算法套件,openssl提供了演算法套件的偏好的配置功能。
nginx提供了對ssl session的快取配置設定,配置ssl_session_cache為off或者none 這兩種情況下 是不會啟用ssl的session快取功能的;而built_in配置ssl_session快取,則會使用openssl內部的session cache機制;shared方式使用的ssl session cache使用的是nginx ssl模組提供的共享記憶體形式的快取,這種session快取能夠被nginx所有的worker程序進行共享訪問,shared模式下可提供session cache大小的閾值設定,cache淘汰過期的方式為簡單的lru方式進行淘汰。openssl提供了對session的超時時間的設定,指令是ssl_session_timeout。
此外,nginx也提供了openssl中對ssl的session ticket控制的功能,以及session ticket key(當然可以配置多個)配合openssl的session ticket的功能進行使用。
ssl_crl提供對pem證書進行檢查的功能,主要是對於客戶端的證書進行檢查(對吊銷的證書進行檢查);nginx同樣提供了ocsp stapling的功能,stapling快取訪問得到的證書資訊,減少ocsp的驗證,提高ssl處理的效率,開啟nginx stapling功能之後,與之配合的指令有ssl_stapling_file,裡面儲存了證書的資訊;ssl_stapling_responder儲存了響應的url資訊,另外還可以使用ssl_stapling_verify,ssl_stapling_verify可以對stapling快取的證書資訊進行驗證,ssl_stapling_verify的功能預設是不會開啟的。
nginx ssl免密碼重啟教程詳解
一 nginx如何啟動 1 http和https的區別 https協議需要到ca申請證書,一般免費證書很少,需要交費。http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。h...
nginx ssl免密碼重啟教程詳解
一 nginx如何啟動 1 http和https的區別 https協議需要到ca申請證書,一般免費證書很少,需要交費。http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。h...
SSL證書申請以及nginx SSL模組配置
第 一 安裝letsencrypt前的準備工作 根據官方的要求,我們在伺服器上部署letsencrypt免費ssl證書之前,需要系統支援python2.7以上版本以及支援git工具 自行安裝,一般伺服器python自帶都已經安裝好了 第 二 快速獲取let s encrypt免費ssl證書 1 安裝...