https原理及實踐

 


轉載請註明出處算法

安全知識

網絡安全問題

數據機密性

在網絡傳輸數據信息時,對數據的加密是相當重要的,不然全部傳輸的數據都是能夠隨時被第三方看到,徹底沒有機密性可言。vim

數據機密性解決問題思路

利用算法瀏覽器

爲了保證數據的機密性,首先能夠採用的方法就是將數據經過相應算法,轉換爲其它的數據信息,而後再經過相應算法反推出真正的數據是什麼,這樣一來就保證了數據在網絡傳輸過程當中安全性,不會被其它人輕易的看到傳輸過程當中的數據信息。數據加密前的信息稱爲明文數據(plaintext),通過加密算法轉換後進行傳輸的信息稱爲密文數據(ciphertext);反之經 過解密算法轉換後,會將密文數據恢復爲明文數據進行顯示接收。緩存

優勢:實現了數據機密傳輸,避免了明文傳輸數據的危險性。安全

缺點:利用加密算法,將明文改密文,若是第三方得到加密算法,便可將傳輸密文再次變爲明文。服務器

利用對稱加密算法解決機密性網絡

普通算法雖然已經解決了明文數據的機密性,能夠在網絡傳輸過程當中不被直接看到明文數據。 可是新的問題又產生了,既然明文數據是經過算法改變成了新的數據信息,若是第三方得到 了算法,利用算法也是能夠將密文數據信息,再次轉換爲明文數據信息,所以出現了對稱加 密算法。形象比喻來講:數據加密算法就比如是一本密碼規則手冊,而對稱加密算法就是將手冊放在了一個保險櫃中進行了上鎖傳輸,只有傳遞數據信息的雙方知道打開保險櫃的密碼。

數據完整性

網絡傳輸數據的完整性,也是安全領域中須要考慮的重要環節,若是不能保證傳輸數據的完整性,那傳輸過程當中的數據就有可能被任何人所篡改,而傳輸數據雙方又不能及早的進行發現。將會形成互連通信雙方所表達信息的意義徹底不一致。所以,對於不完整的數據信息,接收方應該進行相應判斷,若是完整性驗證錯誤,就拒絕接受相應的數據。

數據完整性解決思路

利用單向加密算法

利用數據的單項加密算法(提取數據指紋),進行提取數據特徵碼的方式,從而完成數據傳 輸的完整性驗證。實際的算法實現過程爲:在一段明文數據信息後加上敎據信息的特徵碼, 這個特徵碼是經過結合數據信息進行相應算法得到的數據特徵碼,接收方當收到數據信息後, 會利用相同的加密算法對獲取的數據進行加密,確認加密後獲得的特徵碼是否與傳送過來數 據後面描述的特徵碼一致;若是一致,能夠表示數據沒有被篡改過,若是不一致表示數據完 整性遭到了破壞,數據一律不予以接收處理。

利用單項加密算法(加密特徵碼)

因爲可能存在中間人攻擊的可能性,所以能夠對傳輸過程當中數據特徵碼進行加密,發送方利用對稱密鑰方式對手中的特徵碼進行加密,接收方會利用相同的密鑰對手中的特徵碼進行解密,從而確認特徵碼是否一致。若是中間人將新的特徵碼也進行了加密,發送給接收方,但接收方沒法利用和發送方協商好的解密密鑰對特徵碼進行解密,最終沒法識別中間人發送過來的數據特徵碼信息。

單項加密算法特徵:

  • 數據輸入同樣,特徵碼信息輸出必然相同
  • 雪崩效應,輸入的微小改變,將形成輸出的巨大改變
  • 定長輸出,不管源數據多大,但結果都是同樣的
  • 不可逆的,不管根據數據指紋,還原出原來的數據信息

單項加密算法常見的有:

  • DH加密算法,主要用於密鑰的協商交換
  • MD4 MD5(128)
  • SHA1(160) SHA(192) SHA(256) SHA(384)
  • CRC-32(循環輸出校驗碼),不是加密機制,只是一種校驗機制,不提供安全性,正常加密算 法是不容許出現輸入不同,輸出同樣的狀況,但CRC是能夠有這樣狀況的,由於CRC只 是具備校驗功能,不具備加密功能

非對稱加密算法常見的有:

  • RSA,RSA既是一個公司的名稱,也是三個創始人的名稱,RSA既能夠加密又能夠進行簽名。
  • DSA,只能實現數字簽名功能
  • ELGamal,屬於商業化的加密算法

身份驗證

網絡中傳輸數據時,頗有可能傳輸的雙方是第一次創建鏈接,進行相互通信,既然是第一次 見面溝通,如何確認對方的身份信息,的確是我要進行通信的對象呢?若是不是正確的通信 對象,在通過通信後,豈不是將全部數據信息發送給了一個陌生人。

網絡安全證書由來

 獲取公鑰信息的證書

 默認公鑰在網絡中進行傳遞時,默認狀況下也是會出現問題的以下圖所示:

 

對發送方的公鑰信息進行公正步驟:(藉助第三方安全機構)

  • A和B端首先生成本身的公鑰和私鑰的密鑰對,爲了使對方能相佶本身的公鑰信息。將本身的公鑰信息告知給第三方發證機構,利用第三方機構對本身的公鑰進行公證。第三方機構會製做一個數字證書(機構 編號 以及發證機構的戳)。而且第三方機構也要給本身設置—個合法的公鑰和私鑰,而且公鑰設置爲第三方機構的公鑰證書。
  • 發證機關計算出數字證書數據的特徵碼,並用本身的私鑰逬行加密,並將加密的信息附加到特徵碼後成爲數字簽名。
  • A和B兩端得到公正過的證書信息,並經過證書信息傳遞,獲得對方的公鑰。
  • A和B兩端與第三方機構創建鏈接,得到第三方證書,經過第三方證書得到第三方公鑰,利用第三方公鑰只要能解密數字簽名便可。

 證書信息所包含內容

目前標準的證書存儲格式是X509,還有其餘的證書格式,須要包含的內容爲:

  • 公鑰信息,以及證書過時時間
  • 證書的合法擁有人信息
  • 證書該如何被使用
  • CA頒發機構信息
  • CA簽名的校驗碼

互聯網上使用的SSL和TLS證書管理機制均使用X509的格式

 OpenSSL軟件介紹

Netscape網景公司生產了最初的瀏覽器,但爲了提升瀏覽器訪問頁面的安全性,對TCP/IP模型進行了必定改進,在傳輸層與應用層之間,建立了一個3.5層的概念,稱爲SSL((Secure Sockets Layer安全套接層))層,SSL不是一個軟件,只是一個庫,讓應用層將數據傳輸到傳輸層前,調用了ssl層的功能對數據進行了加密,目前比較流行的版本是(SSLv2 V3),可是SSL是netscape公司進行定義的,不夠開放性,所以爲了使加密功能更加開放,TSL(傳輸層安全協議)協議就出現了,目前比較流行的版本是(TSLv1==ssl v3),TSL更像是傳輸層上實現的數據加密。

OpenSSL軟件詳細說明

一、獲取OpenSSL軟件的版本信息:

[root@web01 html]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
[root@web01 html]# rpm -qa openssl
openssl-1.0.1e-57.el6.x86_64

二、獲取OpenSSL配置文件信息: 

/etc/pki/tls/openssl.cnf    <- openssl配置文件,主要用於配置成私有ca時進行使用

三、獲取OpenSSL命令詳細信息:

  openssl命令詳細信息

OpenSSL軟件創建私有CA

建立私鑰與公鑰信息

須要先給ca證書頒發機構生成證書,即生成一對密鑰;genrsa - generate an RSA private key利用genrsa生成密鑰信息。雖然只是生成私鑰,但須要清楚公鑰是經過私鑰進行提取獲得的,因此只要有私鑰,就能夠有公鑰。私鑰信息是很是重要的,所以生成的私鑰文件應該是600的權限 

  View Code

實操私鑰與公鑰創建

  密鑰創建

生成自簽署的證書

  生成自簽署證書

ca頒發機構的私鑰和證書是不能隨便放置的,而且須要配置私有頒發機構的配置文件

vim /etc/pki/tls/openssl.cnf

[CA_default]模塊參數說明:

參數

配置

官方配置說明

解釋配置說明

dir

=/etc/pki/CA

#Where everthing is kept

建立並定義CA目錄信息

certs

= $dir/certs

#Where the issued certs are kept

證書文件保存目錄

crl_dir

= $dir/crl

#Where the issued crl are kept

證書吊銷文件保存目錄

database

= $dir/index.txt

# data index file

表示發過哪些證書,都要文件進 行記錄

new_certs_dir

= $dir/newcerts

#default place for new certs

默認新證書的存放路徑

certificate

= $dir/cacert.pem

#The CA certificate

定義CA機構本身的證書

serial

= $dir/serial

#The current serial number

表示證書對應的序列號,通常從 01開始

crinumber

= $dir/crinumber

#The current crl number

表示吊銷證書對應的序列號

crl

= $dir/crl.pem

#The current CRL

表示當前證書吊銷列表文件

private_key

= $dir/private/cakey.pem

#The private key

表示CA機構目身的私鑰文件

RANDFILE

= $dir/private/.rand

#private random number file

私鑰隨機數文件,此文件會默認本身創建

在/etc/pki/CA的證書路徑下,還須要有certs crl newcerts三個子目錄信息

指定證書相關的有效期限配置:

參數

配置

官方配置說明

解釋配置說明

default_days

= 365

#how long to certify for

定義證書的有效期限

default_crl_days

= 30

#how long before next CRL

默認證書放罝到吊銷列表中的保存時間

default_md

= default

#use public key default MD

指定單向加密算法採用的是默認的

定義[req_distinguished_name]模塊參數信息,即指定證書中的一些基本屬性信息

參數

配置

舉例配置

解釋配置說明

countryName_default

=XX

= CN

默認的國家改成本地區域名稱

stateOrProvinceName_default

= Default Province

= beijing

默認的省份名稱改成本地區域名稱

localityName_default

=Default City

= beijing

默認的城市名稱改成本地區域名稱

0.orgzanizationName_default

=Default Company Ltd

= o

默認的公司組織名稱

organizationalUnitName_default

=

=ol

默認的公司部分名稱

私有HTTPS實現

nginx配置文件

複製代碼
server {
        listen       443;      # https的端口爲443,要指定
        server_name  www.erlianzhang.com;
        ssl on;                # 開啓ssl,下兩行第一行是引用證書,第二行是引用私鑰
        ssl_certificate /application/nginx/conf/keys/server.crt;
        ssl_certificate_key /application/nginx/conf/keys/server.key;
        location / {
            root   html/;
            index  index.html index.htm;
        }
}
複製代碼

設置自動跳轉https

 每次都要輸入https很煩,因此設置自動跳轉

利用地址重寫功能(方法1)

在本來的server模塊上在加一個server:

server {
    listen  80;
    server_name www.erlianzhang.com;
    rewrite ^(.*)$  https://$host$1 permanent;
}

說明:在https配置server基礎上再添加http跳轉server

利用error_page識別錯誤碼信息進行跳轉(方法2)

複製代碼
server {
        listen       443;
        listen       80;
        server_name  www.erlianzhang.com;
        ssl on;
        ssl_certificate /application/nginx/conf/key/server.crt;
        ssl_certificate_key /application/nginx/conf/key/server.key;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
       error_page 497  https://$host$uri;
}
複製代碼

說明:497爲內置錯誤碼,當訪問http沒法處理,須要利用https處理時

利用反向代理服務器進行http到https跳轉

修改地址池信息

將端口改成https的默認443端口 

upstream www_server_pools {
            server 10.0.0.7:443;
            server 10.0.0.8:443;
            server 10.0.0.9:443;
}

引用地址池時也要把http改爲https

proxy_pass https://web_pools;

修改地址池調用信息

注意,負載上也要有key證書與私鑰文件

複製代碼
server {
    listen       443;
    server_name  www.erlianzhang.com;
    ssl on;
    ssl_certificate /application/nginx/conf/key/server.crt;
    ssl_certificate_key /application/nginx/conf/key/server.key;
    location / {
    proxy_pass https://www_server_pools;
    }
}
複製代碼

定義http到https跳轉配置信息

server {
    listen       80;
    server_name  www.erlianzhang.com;
    rewrite ^(.*)$  https://$host$1 permanent;
}

nginx中的ngx_http_ssl_module模塊(https相關)

指令

ssl

語法:    ssl on | off;
默認:    ssl off
語境:    http,server
功能:    ssl功能啓用/不啓用

爲給定的虛擬服務器啓用HTTPS協議。

ssl_buffer_size

句法:    ssl_buffer_size size;
默認:    ssl_buffer_size 16k;
語境:    http, server
該指令出如今1.5.9版本中。
功能:    設置用於發送數據的緩衝區的大小。

默認狀況下,緩衝區大小爲16k,這對應於發送大響應時的最小開銷。爲了最小化第一個字節的時間,使用較小的值多是有益的,例如:

ssl_buffer_size 4k;

ssl_certificate

句法:    ssl_certificate file;
默認:    -
語境:    http, server
功能:    指定當前虛擬主機所使用的證書文件

指定file具備給定虛擬服務器的PEM格式的證書。若是除了主要證書以外還應該指定中間證書,則應該按照如下順序在同一個文件中指定它們:主要證書首先是中間證書,而後是中間證書。PEM格式的密鑰能夠放在同一個文件中。

從版本1.11.0開始,能夠屢次指定該指令來加載不一樣類型的證書,例如RSA和ECDSA:

  例子

注意:應該記住的是,因爲HTTPS協議限制了最大的互操做性,虛擬服務器應該監聽不一樣的IP地址。

ssl_certificate_key

句法:    ssl_certificate_key file;
默認:    -
語境:    http, server
功能:    當前虛擬主機與其證書文件匹配的私鑰文件,用來解密

指定file給定虛擬服務器的PEM格式密鑰。

能夠指定值engine:name:id能夠指定代替file(1.7.9),該文件從OpenSSL引擎名稱加載具備指定標識的密鑰id。

ssl_ciphers

句法:    ssl_ciphers ciphers;
默認:    ssl_ciphers HIGH:!aNULL:!MD5;
語境:    http, server
功能:    指定支持加密算法

指定啓用的密碼。密碼以OpenSSL庫理解的格式指定,例如:

ssl_ciphers ALL:!aNULL:!EXPORT56:RC4 + RSA:+ HIGH:+ MEDIUM:+ LOW:+ SSLv2:+ EXP;

完整列表可使用「 openssl ciphers」命令查看。

之前版本的nginx 默認使用不一樣的密碼。

ssl_client_certificate

句法:    ssl_client_certificate file;
默認:    -
語境:    http, server
功能:    制定一個受信任的CA證書用於驗證客戶端證書

若是啓用了ssl_stapling,則指定包含filePEM格式的可信CA證書,用於驗證客戶端證書和OCSP響應。

證書列表將被髮送給客戶。若是不須要,可使用ssl_trusted_certificate指令。

ssl_crl

句法:    ssl_crl file;
默認:    -
語境:    http, server
該指令出如今0.8.7版本中。
功能:    證書吊銷列表

指定file用於驗證客戶端證書的PEM格式的撤銷證書(CRL)。

ssl_dhparam

句法:    ssl_dhparam file;
默認:    -
語境:    http, server
該指令出如今0.7.2版本中。

指定fileDHE密碼的DH參數。

ssl_ecdh_curve

句法:    ssl_ecdh_curve curve;
默認:    ssl_ecdh_curve auto;
語境:    http, server
該指令出如今版本1.1.0和1.0.6中。

指定一個curve用於ECDHE密碼。

當使用OpenSSL 1.0.2或更高版本時,能夠指定多條曲線(1.11.0),例如:

ssl_ecdh_curve prime256v1:secp384r1;

特殊值auto(1.11.0)指示nginx在使用OpenSSL 1.0.2或更高prime256v1版本時使用OpenSSL庫中內置的列表,或使用舊版本。

在版本1.11.0以前,prime256v1曲線是默認使用的。

ssl_password_file

句法:    ssl_password_file file;
默認:    -
語境:    http, server
該指令出如今版本1.7.3。
功能:    指定password文件

指定file使用密碼對密鑰 ,其中每一個密碼都在單獨的行中指定。加載密鑰時會依次嘗試密碼。例:

  例子

ssl_prefer_server_ciphers

句法:    ssl_prefer_server_ciphers on | off;
默認:    ssl_prefer_server_ciphers off;
語境:    http, server
功能:    服務端傾向使用的加密算法

指定在使用SSLv3和TLS協議時,服務器密碼應優先於客戶端密碼。

ssl_protocols

句法:    ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
默認:    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
語境:    http, server
功能:    使用什麼樣的加密協議,支持ssl協議版本

啓用指定的協議。

TLSv1.1和TLSv1.2參數(1.1.13,1.0.12)僅在使用OpenSSL 1.0.1或更高版本時才起做用。

僅當使用支持TLSv1.3的OpenSSL 1.1.1時 ,TLSv1.3參數(1.13.0)才起做用。

ssl_session_cache

句法:    ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
默認:    ssl_session_cache無;
語境:    http, server
功能:    ssl會話緩存

設置存儲會話參數的高速緩存的類型和大小。緩存能夠是如下任何一種類型:

off

嚴禁使用會話緩存:nginx明確告訴客戶端會話可能不會被重用。

none

會話緩存的使用被輕輕地禁止:nginx告訴客戶端會話可能被重用,但實際上不會將會話參數存儲在緩存中。

builtin

創建在OpenSSL中的緩存; 僅由一個工做進程使用。緩存大小在會話中指定。若是沒有給出大小,則等於20480個會話。內置緩存的使用可能致使內存碎片。

shared

全部工做進程之間共享的緩存。緩存大小以字節爲單位指定; 一兆字節能夠存儲大約4000個會話。每一個共享緩存都應該有一個任意的名字。具備相同名稱的緩存能夠在多個虛擬服務器中使用。

兩種緩存類型均可以同時使用,例如:

ssl_session_cache builtin:1000 shared:SSL:10m;

注意:但只使用沒有內置緩存的共享緩存應該更有效率。

ssl_session_ticket_key

句法:    ssl_session_ticket_key file;
默認:    -
語境:    http, server
這個指令出如今1.5.7版本中。

file使用用於加密和解密TLS會話票據的密鑰設置a。若是必須在多個服務器之間共享相同的密鑰,則該指令是必需的。默認狀況下,使用隨機生成的密鑰。

若是指定了多個密鑰,則只使用第一個密鑰來加密TLS會話票據。這容許配置密鑰旋轉,例如:

ssl_session_ticket_key current.key;
ssl_session_ticket_key previous.key;

file必須含有80或48個字節的隨機數據,而且可使用下面的命令建立:

openssl rand 80> ticket.key

根據文件大小,AES256(80字節密鑰,1.11.8)或AES128(48字節密鑰)用於加密。

ssl_session_tickets

句法:    ssl_session_tickets on | off;
默認:    ssl_session_tickets;
語境:    http, server
該指令出如今1.5.9版本中。
功能:    禁用或啓用會話恢復

經過TLS會話票據啓用或禁用會話恢復。

ssl_session_timeout

句法:    ssl_session_timeout time;
默認:    ssl_session_timeout 5m;
語境:    http, server
功能:    ssl參數的有效時長,會話超時時間

指定客戶端能夠從新使用會話參數的時間。

ssl_stapling

句法:    ssl_stapling on | off;
默認:    ssl_stapling off;
語境:    http, server
這個指令出如今1.3.7版本中。

啓用或禁用 服務器對OCSP響應的裝訂。例:

ssl_stapling on;
resolver 192.0.2.1;

要使OCSP裝訂工做,應該知道服務器證書頒發者的證書。若是ssl_certificate文件不包含中間證書,則服務器證書頒發者的證書應存在於ssl_trusted_certificate文件中。

對於OCSP響應者主機名的解析,也應指定解析器指令。

ssl_stapling_file

句法:    ssl_stapling_file file;
默認:    -
語境:    http, server
這個指令出如今1.3.7版本中。

設置時,裝訂好的OCSP響應將取自指定的地址,file而不是查詢服務器證書中指定的OCSP響應者。

該文件應該是由「openssl ocsp」命令產生的DER格式。

ssl_stapling_responder

句法:    ssl_stapling_responder url;
默認:    -
語境:    http, server
這個指令出如今1.3.7版本中。

覆蓋「 受權信息訪問 」證書擴展中指定的OCSP響應者的URL 。

僅http://支持「 」OCSP響應者:

ssl_stapling_responder http://ocsp.example.com/;

ssl_stapling_verify

句法:    ssl_stapling_verify on | off;
默認:    ssl_stapling_verify off;
語境:    http, server
這個指令出如今1.3.7版本中。

啓用或禁用服務器驗證OCSP響應。

要使驗證生效,應使用ssl_trusted_certificate指令將服務器證書頒發者,根證書和全部中間證書的證書配置爲可信。

ssl_trusted_certificate

句法:    ssl_trusted_certificate file;
默認:    -
語境:    http, server
這個指令出如今1.3.7版本中。

若是啓用了ssl_stapling,則 指定包含filePEM格式的可信CA證書,用於驗證客戶端證書和OCSP響應。

與由ssl_client_certificate設置的證書相比,這些證書的列表不會被髮送到客戶端。

ssl_verify_client

句法:    ssl_verify_client on | off | optional | optional_no_ca;
默認:    ssl_verify_client off;
語境:    http, server

啓用客戶端證書的驗證。驗證結果存儲在 $ ssl_client_verify變量中。

的optional參數(0.8.7+)請求的客戶端證書,並驗證它證書是否存在。

該optional_no_ca參數(1.3.8,1.2.5)要求客戶端證書,但不要求它由受信任的CA證書進行簽名。這適用於nginx外部的服務執行實際證書驗證的狀況。證書的內容能夠經過$ ssl_client_cert變量訪問。

ssl_verify_depth

句法:    ssl_verify_depth number;
默認:    ssl_verify_depth 1;
語境:    http, server

設置客戶端證書鏈中的驗證深度。

錯誤處理

該ngx_http_ssl_module模塊支持使用error_page指令能夠用於重定向的幾個非標準錯誤代碼 :

495     客戶端證書驗證過程當中發生錯誤;
496     客戶沒有提交所需的證書;
497     常規請求已發送到HTTPS端口。

重定向發生後,該請求被徹底解析和變量,如requesturirequesturi,uri,$args等人,均可用。

嵌入式變量

該ngx_http_ssl_module模塊支持多個嵌入式變量:

$ssl_cipher

返回用於創建的SSL鏈接的密碼字符串;

$ssl_ciphers

返回客戶端支持的密碼列表(1.11.7)。已知的密碼按名稱列出,未知以十六進制顯示,例如:

AES128-SHA:AES256-SHA:0x00ff

注意:只有在使用OpenSSL版本1.0.2或更高版本時才支持該變量。對於舊版本,該變量僅適用於新會話,並只列出已知密碼。

$ssl_client_escaped_cert

以創建的SSL鏈接(1.13.5)返回PEM格式的客戶端證書(urlencoded);

$ssl_client_cert

以創建的SSL鏈接的PEM格式返回客戶端證書,除第一行以外的每一行都加上製表符;這是爲了在 proxy_set_header指令中使用;

注意:該變量已被棄用,$ssl_client_escaped_cert應該使用該變量。

$ssl_client_fingerprint

爲創建的SSL鏈接(1.7.1)返回客戶端證書的SHA1指紋;

$ssl_client_i_dn

根據RFC 2253(1.11.6),爲創建的SSL鏈接返回客戶端證書的「頒發者DN」字符串;

$ssl_client_i_dn_legacy

爲創建的SSL鏈接返回客戶端證書的「頒發者DN」字符串;

說明:在版本1.11.6以前,變量名是$ssl_client_i_dn。

$ssl_client_raw_cert

以創建的SSL鏈接的PEM格式返回客戶端證書;

$ssl_client_s_dn

根據RFC 2253(1.11.6),爲創建的SSL鏈接返回客戶端證書的「主題DN」字符串;

$ssl_client_s_dn_legacy

爲創建的SSL鏈接返回客戶端證書的「主題DN」字符串;

說明:在版本1.11.6以前,變量名是$ssl_client_s_dn。

$ssl_client_serial

爲創建的SSL鏈接返回客戶端證書的序列號;

$ssl_client_v_end

返回客戶端證書的結束日期(1.11.7);

$ssl_client_v_remain

返回客戶端證書過時的天數(1.11.7);

$ssl_client_v_start

返回客戶端證書的開始日期(1.11.7);

$ssl_client_verify

若是證書不存在,則 返回客戶端證書驗證的結果:「 SUCCESS」,「 FAILED:reason」和「 NONE」;

說明:在版本1.11.7以前,「 FAILED」結果不包含reason字符串。

$ssl_curves

返回客戶端支持的曲線列表(1.11.7)。已知曲線按名稱列出,未知以十六進制顯示,例如:

0x001d:prime256v1:secp521r1:secp384r1

注意:只有在使用OpenSSL版本1.0.2或更高版本時才支持該變量。對於舊版本,變量值將是一個空字符串。該變量僅適用於新會話。

$ssl_protocol

返回創建的SSL鏈接的協議;

$ssl_server_name

經過SNI (1.7.0)返回請求的服務器名稱 ;

$ssl_session_id

返回創建的SSL鏈接的會話標識符;

$ssl_session_reused

若是SSL會話被重用,則 返回「 」;不然返回「 」 .(1.5.11)。

相關文章
相關標籤/搜索