SSL TLS高強度加密

2021-06-02 22:10:11 字數 3975 閱讀 5099

由於ssl、http、apache三者共同對請求進行處理,這使得在支援ssl的web伺服器上實現特殊的安全制約變得不那麼簡單。本節介紹了普通情況下的解決方案,作為找出最終方案的第一步。採用這些方案以前,先要盡量地去理解,不了解其限制和相關性就貿然使用是最糟糕的了。

可以這樣建立乙個僅使用sslv2協議及其密碼演算法的伺服器:

sslprotocol -all +sslv2

sslciphersuite sslv2:+high:+medium:+low:+exp

如下設定為僅使用最強的七種密碼演算法:

sslprotocol all

sslciphersuite high:medium

# 允許在初始握手階段使用所有的密碼,以允許對外伺服器通過sgc功能提公升密碼組

sslciphersuite all:!adh:rc4+rsa:+high:+medium:+low:+sslv2:+exp:+enull

# 但是最終會拒絕所有沒有提公升密碼組的瀏覽器

sslrequire % >= 128

顯然,不能使用伺服器全域性設定sslciphersuite,它會限制密碼為強型別。但是,mod_ssl允許重配置針對目錄的密碼組,並自動進行乙個帶有服重新配置的ssl引數的重協商。因此,其解決方案成了:

# 在一般情況下的處理是寬鬆的

sslciphersuite all:!adh:rc4+rsa:+high:+medium:+low:+sslv2:+exp:+enull

# 但對於 https://hostname/strong/area/ 及其以下的內容要求高強度密碼

sslciphersuite high:medium

如果你了解你的使用者群體(比如:乙個封閉的使用者組),正如在乙個intranet中,則可以使用一般的證書認證。所有要做的事情只是,建立由你自己的ca證書簽發的客戶證書ca.crt,並依此證書校驗客戶。

# 要求客戶端必須擁有由我們自己的ca(其證書是ca.crt)直接簽名的證書

sslverifyclient require

sslverifydepth 1

sslcacertificatefile conf/ssl.crt/ca.crt

這又要用到mod_ssl提供的針對目錄的重配置功能:

sslverifyclient none

sslcacertificatefile conf/ssl.crt/ca.crt

sslverifyclient require

sslverifydepth 1

其關鍵在於對客戶證書的各個組成部分進行驗證,一般就是指驗證 distinguished name (dn) 的全部或部分。有基於mod_auth_basic和基於sslrequire型別的兩種方法以驗證。第一種方法適合用於客戶完全屬於不同型別,並為所有客戶建立了密碼資料庫的情形;第二種方法適用於客戶都屬於乙個被編碼寫入dn的公共分級的一部分的情形,因為匹配客戶會更容易。

第一種方法:

第二種方法:

sslverifyclient      none

sslverifyclient require

sslverifydepth 5

sslcacertificatefile conf/ssl.crt/ca.crt

sslcacertificatepath conf/ssl.crt

ssloptions +fakebasicauth

sslrequiressl

sslrequire % eq "snake oil, ltd." \

and % in

假設intranet客戶的ip位址是192.160.1.0/24,intranet站點子區域的url是/subarea,則可以在https虛擬主機以外這樣配置(以同時作用於https和http):

sslcacertificatefile conf/ssl.crt/company-ca.crt

# subarea以外的區域只允許來自intranet的訪問

order deny,allow

deny from all

allow from 192.168.1.0/24

# 在subarea以內,允許所有來自intranet的訪問,

# 但對來自internet的訪問,僅允許https+strong-cipher+password

# 或者https+strong-cipher+client-certificate

# 如果使用了https,則確保使用高強度加密

# 同時允許客戶以基本認證的形式認證

sslverifyclient optional

sslverifydepth 1

ssloptions +fakebasicauth +strictrequire

sslrequire % >= 128

# 強制來自internet的客戶使用https

rewriteengine on

rewritecond % !^192\.168\.1\.[0-9]+$

rewritecond % !=on

rewriterule .* - [f]

# 允許網路訪問和基本認證

satisfy any

# 控制網路訪問

order deny,allow

deny from all

allow 192.168.1.0/24

# http基本認證

authtype basic

authname "protected intranet area"

authbasicprovider file

authuserfile conf/protected.passwd

require valid-user

高強度間歇訓練 HIIT

大家都知道身體健康很重要,但如果每天只有45分鐘,可試試下面這種叫hiit high intensity interval training 的方法 首先跑步熱身15 25分鐘 接著做高強度的帶氧運動,每輪45秒,然後休息30 45秒,總共做8 10個迴圈 最後,從頭到足,做一些拉伸運動結束,減少肌...

安卓高強度本地資料加密指北

不想寫so而又想加密本地資料有一定安全強度。對於對稱加密,aes作為des的公升級版,安全性得到提公升,是現在本地加密的主流。本文給出aes的最簡實踐原始碼。做這個的起因是因為東家的加密方法是使用so庫,優點是效能過得去,不依賴安卓版本,不用頻繁改動,但是缺點就是秘鑰儲存在本地,存在本地的內容即使扔...

加密狗原理 高強度加密 程式加密技巧

加密狗原理,加密狗加密的基本原理 本文將介紹軟體加密加密狗原理,加密狗加密的基本原理的一些程式設計技巧,以及軟體開發者將如何編寫安全可靠 的 如何對付各種各樣的加密狗破解,編寫加密程式時應該盡量避免的一 些問題等等。加密狗加密的基本原理 開發商程式通過呼叫硬體加密狗的介面模組對硬體加密狗操作,硬體加...