新聞中心
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和普及,網(wǎng)絡(luò)安全逐漸成為一個(gè)備受關(guān)注的問題。在網(wǎng)絡(luò)安全領(lǐng)域中,Linux和OpenSSL是至關(guān)重要的兩個(gè)方面。

在青縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營(yíng)銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè),青縣網(wǎng)站建設(shè)費(fèi)用合理。
Linux是一種開源操作系統(tǒng),由Linus Torvalds創(chuàng)造并維護(hù)。它是一個(gè)強(qiáng)大、安全和可靠的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器端和移動(dòng)設(shè)備等領(lǐng)域,因其開放源代碼、穩(wěn)定性強(qiáng)、自由度高的特點(diǎn),備受各大互聯(lián)網(wǎng)企業(yè)的青睞。另外,Linux還有一個(gè)顯著的優(yōu)勢(shì),就是其強(qiáng)大的網(wǎng)絡(luò)性能。由于Linux對(duì)網(wǎng)絡(luò)性能的優(yōu)化和支持,使得其成為一種理想的服務(wù)器操作系統(tǒng)。
而OpenSSL則是一種加密工具包,它提供了開發(fā)者和管理員加密和解密數(shù)據(jù)的功能。這種工具包通常被用于在網(wǎng)絡(luò)通信中確保數(shù)據(jù)的安全性和隱私。OpenSSL支持各種加密算法,例如DES、Blowfish、AES等,并且支持各種加密模式,例如ECB、CBC等。它還提供了證書驗(yàn)證、數(shù)字簽名、秘鑰生成等功能。
Linux和OpenSSL有著密切的關(guān)系,前者提供了一個(gè)優(yōu)越的操作系統(tǒng)平臺(tái),后者則提供了必要的加密與安全保障。在今天網(wǎng)絡(luò)安全日益嚴(yán)峻的情況下,這樣的組合被廣泛應(yīng)用于服務(wù)器、網(wǎng)絡(luò)設(shè)備上等位置。
Linux系統(tǒng)為OpenSSL提供了優(yōu)越的執(zhí)行環(huán)境和性能支持。在Linux下,OpenSSL的性能表現(xiàn)非常優(yōu)秀。Linux的強(qiáng)大網(wǎng)絡(luò)性能與OpenSSL的加密技術(shù)相輔相成,為網(wǎng)絡(luò)通信提供了堅(jiān)實(shí)的保障。
OpenSSL的加密技術(shù)是Linux下一些網(wǎng)絡(luò)應(yīng)用必不可少的一部分。例如,web 服務(wù)器、eml 服務(wù)器、DNS解析器等等,這些服務(wù)應(yīng)用都需要通過加密來確保數(shù)據(jù)的安全傳輸。OpenSSL的證書驗(yàn)證和數(shù)字簽名技術(shù)可以保證通信的可信度和完整性。
另外,在Linux環(huán)境下,OpenSSL也是一個(gè)強(qiáng)大、靈活的安全工具。使用OpenSSL可以輕松地生成數(shù)字證書,這對(duì)于網(wǎng)絡(luò)安全來說是非常重要的。在一些高度安全性要求的應(yīng)用中,例如金融交易、醫(yī)療保健等應(yīng)用中,數(shù)字證書可以確保通信安全性和用戶身份證明的準(zhǔn)確性。
此外,Linux和OpenSSL也會(huì)被用作安全監(jiān)測(cè)和風(fēng)險(xiǎn)識(shí)別工具。使用 Linux 和 OpenSSL ,可以開發(fā)出一些自定義的工具來監(jiān)測(cè)網(wǎng)絡(luò)通信和識(shí)別潛在的風(fēng)險(xiǎn)。開發(fā)者可以使用 Linux 的網(wǎng)絡(luò)監(jiān)測(cè)工具(Wireshark、tcpdump和nmap等)來監(jiān)測(cè)網(wǎng)絡(luò)通信,同時(shí)使用 OpenSSL 分析數(shù)據(jù)包中的數(shù)據(jù)來識(shí)別未加密的通信情況。
綜上所述,Linux和OpenSSL是網(wǎng)絡(luò)安全領(lǐng)域中不可或缺的兩個(gè)方面。Linux提供了穩(wěn)定、高效的操作系統(tǒng)平臺(tái),OpenSSL則提供了加密和安全保障的功能,二者形成了完美的配合。網(wǎng)絡(luò)安全的重要性越來越受到重視,需要有Linux和OpenSSL這樣的強(qiáng)大工具來應(yīng)對(duì)各種挑戰(zhàn)和威脅。Linux和OpenSSL的不斷發(fā)展和完善,將會(huì)使其在未來的互聯(lián)網(wǎng)安全領(lǐng)域中發(fā)揮更加重要的作用。
相關(guān)問題拓展閱讀:
- linux下使用openssl檢測(cè)PE文件數(shù)字簽名的證書是否有效
linux下使用openssl檢測(cè)PE文件數(shù)字簽名的證書是否有效
之一個(gè)坑: 有效期
windows在判斷證書是否有效時(shí)不檢測(cè)證書的有效期, 即使該證書超過有效期好幾年了, 只要沒有被吊銷, 微軟仍然認(rèn)為它是有效的. 但在 openssl 提供的 X509_verify_cert 函數(shù)會(huì)驗(yàn)證證書的有效期, 因此需要注釋掉驗(yàn)證有效期的那部分代碼并重新編譯 openssl…
OK, 從 openssl 官網(wǎng) 上下載最新的版本, 好吧, 現(xiàn)在還是剛剛修復(fù) Heartbleed 漏洞的 1.0.1g 版本…
下載, 解壓, 看下 INSTALL 文檔, 先試試可以編譯不:
./config
make
運(yùn)氣不錯(cuò), 不用安裝什么依賴直缺稿接編譯成功. 將代碼根目錄產(chǎn)生的 libcrypto.a 添加到項(xiàng)目中測(cè)試下, OK, 可以使用, 下面開始折騰了~
在 crypto/x509/x509_vfy.c 的 153 行找到 X509_verify_cert 函數(shù)(在線查看), 局部變量 ok 緩存每一步驗(yàn)證是否通過, 它依次調(diào)用了:
check_issued
check_chain_extensions
check_name_constraints
check_trust
check_revocation
internal_verify
check_policy
其中 internal_verify (在線查看)驗(yàn)證了證書的有效期, 進(jìn)伏梁孝入這個(gè)函數(shù), 在 1654 行找到這個(gè)代碼:
ok = check_cert_time(ctx, xs);
if (!ok)
goto end;
看看 check_cert_time 函數(shù), 確認(rèn)是檢查 notBefore 和 notAfter, 因此將上面三行代碼注釋掉, 驗(yàn)證證書時(shí)就不會(huì)檢測(cè)有效期了.
然后就是重新編譯 openssl, 將 libcrypto.a 集成到項(xiàng)目里了~
第二個(gè)坑: unhandled critical extension
搜索了下, 在 openssl 官網(wǎng)上找到這個(gè):
-ignore_critical
Normally if an unhandled critical extension is present which is not supported by OpenSSL the certificate is rejected (as required by RFC5280). If this option is set critical extensions are ignored.
原來是當(dāng)openssl遇到證書中有它不支持的 未處理的關(guān)鍵擴(kuò)展(unhandled critical extension ?) 時(shí), 它會(huì)拒絕加載該證書.
再搜索下 -ignore_critical, 在 verify.c 中找到如下代碼片段:
else if (strcmp(*argv,”-ignore_critical”) == 0)
vflags |= X509_V_FLAG_IGNORE_CRITICAL;
然后再使用 X509_STORE_set_flags 函數(shù)設(shè)置標(biāo)志位:
X509_STORE *ctx;
…
X509_STORE_set_flags(ctx, vflags);
即可.
第三個(gè)坑: certificate signature failure
這個(gè)坑填不上了, openssl 說:
7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure
the signature of the certificate is invalid.
在windows下導(dǎo)出證書文件, 直接用 openssl 驗(yàn)證, 在加載證書就會(huì)出錯(cuò), PEM_read_bio_X509 返回為空….
第四個(gè)坑: A certificate was explicitly revoked by its issuer.
A certificate was explicitly revoked by its issuer. 是 Sysinternals 提供的工具sigcheck.exe 的檢測(cè)結(jié)果, 把文件拎出來一看, 證書真渣衡的被撤銷了…
OK, 只好根據(jù)證書上的 CRL Distribution Point(CRL 分發(fā)點(diǎn)) 提供的 URL 下載 撤銷證書列表 文件, 然后在調(diào)用 X509_verify_cert 驗(yàn)證證書鏈之前, 設(shè)置填充被撤銷的證書列表:
X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); // 讀取被撤銷的證書列表
STACK_OF(X509_CRL) *sk_X509_CRL_new_null();
#define sk_X509_CRL_push(st, val) SKM_sk_push(X509_CRL, (st), (val)); // sk_X509_CRL_push(STACK_OF(X509_CRL) *crls, X509_CRL *crl);
void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); // 設(shè)置被撤銷的證書列表
同時(shí), 也要設(shè)置檢查被撤銷證書列表的標(biāo)志位 X509_V_FLAG_CRL_CHECK, 然后再調(diào)用X509_verify_cert 驗(yàn)證證書鏈即可.
填了第四個(gè)坑后又引起了第五個(gè)坑(如何獲取撤銷證書列表)和第六個(gè)坑(設(shè)置檢測(cè)撤銷證書列表的標(biāo)識(shí)位后, 如果該證書沒有撤銷證書列表則直接報(bào)錯(cuò))…
第五個(gè)坑: 獲取撤銷證書列表文件
證書上的 CRL Distribution Point(CRL 分發(fā)點(diǎn)) 屬于擴(kuò)展屬性, 在 PKCS #7: Cryptographic Message Syntax V1.5 上沒有相關(guān)介紹.
在 StackOverflow 上找到這個(gè)問答 Openssl – How to check if a certificate is revoked or not, 其中第二個(gè)回答說 CRL 是在 RFC 5280 中定義的, 除了證書中附帶被撤銷的證書列表以外還有使用 OCSP 協(xié)議的, 即使證書撤銷列表也分為使用 URL分發(fā)點(diǎn)和 LDAP DNs(???)提供的, 目前先考慮使用 URL 作為 CRL分發(fā)點(diǎn) 的情況吧.
然而 openssl 沒有提供直接獲取 CRL 分發(fā)點(diǎn) URL 的API, 那個(gè)回答說 Apache 的 mod_ssl 模塊有本地 CRL 和 OCSP 檢測(cè)的實(shí)現(xiàn)代碼, 但沒有說明哪里有檢測(cè)使用 URL 作為 CRL分發(fā)點(diǎn) 的實(shí)現(xiàn)方法.
然后又在 frank4dd.com上找到這個(gè)代碼 certextensions.c, 他給出了一個(gè)如何使用 openssl 從 X.509v3 版本的證書文件中提取擴(kuò)展內(nèi)容的示例程序, 太感謝 Frank4DD 這位仁兄了~~~
到這里后, 可以直接使用他的示例程序, 根據(jù)關(guān)鍵字 Full Name 和 URI 定位 CRL 分發(fā)點(diǎn) 的 URL, 也可以看看 openssl 是如何提取這個(gè) URL 的, 然后自己實(shí)現(xiàn)一個(gè)接口.
如果自作孽使用第二種方法的話, 就編譯個(gè) debug 版的 openssl 庫, 然后調(diào)試跟進(jìn)X509V3_EXT_print 函數(shù), 一步一步的向下走, 直到走到 GENERAL_NAME_print 函數(shù), 這里就是終點(diǎn)了…然后就知道了 CRL 分發(fā)點(diǎn) 的 URL 的編號(hào)為 6, 也就是 GEN_URI, 直接取結(jié)果吧.
第六個(gè)坑: CRL有效期
在windows環(huán)境下每次查看PE文件的數(shù)字簽名時(shí), windows 都會(huì)從 CRL分發(fā)點(diǎn) 下載吊銷證書列表做驗(yàn)證, 一般來說, 每個(gè) CRL的有效期是非常短的, 大概只有 5~20 天的有效期吧, 然而我們不可能像 windows 一樣每次查看數(shù)字簽名時(shí)就從 CRL分發(fā)點(diǎn) 下載最新的吊銷列表.
另外, windows 遇到過期的 CRL 時(shí)不會(huì)產(chǎn)生證書鏈無效的結(jié)果, 但 openssl 在遇到過期的 CRL 時(shí)就會(huì)導(dǎo)致證書鏈驗(yàn)證失敗, 因此在加載和驗(yàn)證 CRL 時(shí), 要忽略 CRL 的有效期.
分析 openssl 源代碼, X509_verify_cert 調(diào)用 check_revocation , 之后調(diào)用 check_cert , 然后再調(diào)用 check_crl , 在這個(gè)函數(shù)里有檢測(cè) CRL 有效期的代碼:
if (!(ctx->current_crl_score & CRL_SCORE_TIME))
{
ok = check_crl_time(ctx, crl, 1);
if (!ok)
goto err;
}
將其注釋掉即可忽略檢測(cè) CRL 有效期.
第七個(gè)坑: CRL 列表為空導(dǎo)致 openssl 認(rèn)為沒有加載 CRL
9 初始化順序
10 證書名: key_id
?
關(guān)于linuxopensll的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站標(biāo)題:Linux和OpenSSL的關(guān)系和作用(linuxopensll)
標(biāo)題來源:http://fisionsoft.com.cn/article/djgddsh.html


咨詢
建站咨詢
