亚洲一区无码中文字幕乱码不卡|91久久精品免费观看国产|97人妻免费碰视频碰免|国产AV资源无限一区,亚洲精品无人区在线观看,精品午夜一区二区三区在线观看,亚洲欧美国产va在线播放频

ssl證書生成

農(nóng)機(jī)大全網(wǎng)(m.121vipspeaking.com)最新農(nóng)機(jī)信息:ssl證書生成,農(nóng)機(jī)新產(chǎn)品,二手農(nóng)機(jī),農(nóng)機(jī)補(bǔ)貼目錄,農(nóng)機(jī)價(jià)格查詢,農(nóng)機(jī)報(bào)價(jià)大全,更多農(nóng)機(jī)資訊請(qǐng)查看:農(nóng)機(jī)資訊

  ssl證書生成

正文

企業(yè)安防建設(shè)的流程:

1、進(jìn)入鳴蟬SaaS建站系統(tǒng)點(diǎn)擊首頁大圖【注冊(cè)】按鈕進(jìn)入界面跟隨系統(tǒng)步驟引導(dǎo)填信息后即可進(jìn)入自助創(chuàng)建界面。

2、點(diǎn)擊【企業(yè)網(wǎng)站】然后點(diǎn)擊【安防一類型】或【手機(jī)端網(wǎng)站】進(jìn)入系統(tǒng)界面根據(jù)自己的所屬行業(yè)或者色彩、風(fēng)格喜好選用一個(gè)網(wǎng)站模板。

3、選用模板后自動(dòng)進(jìn)入編輯界面自由刪除、更改文字或者圖片換成自己的信息也可以按照自己的喜好來選擇添加或刪除某個(gè)模塊這個(gè)過程會(huì)比較費(fèi)時(shí)間可以托管給平臺(tái)進(jìn)行全程代設(shè)計(jì)。

網(wǎng)站編輯完成保存預(yù)覽即大功告成。如果計(jì)劃綁定獨(dú)立域名可以進(jìn)行支付服務(wù)器費(fèi)用進(jìn)行升級(jí)即可。

企業(yè)上云現(xiàn)在有靠譜的呆貓?jiān)谱烂婕纯墒褂么糌堅(jiān)谱烂娌恍枰约号渲迷萍軜?gòu)等復(fù)雜步驟只需要簡單一步申請(qǐng)機(jī)型即可按需收費(fèi)而且隨開隨用機(jī)型眾多需要多少臺(tái)云機(jī)器自己申請(qǐng)即可而且還提供企業(yè)員工管理服務(wù)更好的管理員工。

作為企業(yè)安防需要的也是一個(gè)工作效率和協(xié)同工作那么使用呆貓?jiān)谱烂婵梢暂p松幫你解決

呆貓?jiān)谱烂娑嗳送瑫r(shí)使用提供高速專線傳輸通道擁有強(qiáng)大的云存儲(chǔ)能力安全穩(wěn)定促進(jìn)信息流通和資源共享提高辦公效率高速傳輸、共享存儲(chǔ)、批量使用。提高工作效率一鍵輕松上云提高工作方式靈活性。

企業(yè)使用呆貓?jiān)谱烂嬗幸韵聝?yōu)勢(shì):

高性能云上制作:機(jī)型軟件按需部署一鍵安裝;豐富的算力資源體驗(yàn)流暢的制作環(huán)境。

內(nèi)網(wǎng)同步傳輸:內(nèi)網(wǎng)同步傳輸采用了SSL加密TLS協(xié)議保障文件安全高效的同時(shí)又能實(shí)時(shí)共享。

存儲(chǔ)性能強(qiáng):按需彈性擴(kuò)容海量存儲(chǔ)降低硬件投資成本。

節(jié)省IT成本:集中化的云服務(wù)器運(yùn)算模式大幅提高資源利用率無需重復(fù)投資硬件節(jié)約IT成本

針對(duì)設(shè)計(jì)類大項(xiàng)目多的公司呆貓?jiān)谱烂鏋橄驈V大CG設(shè)計(jì)師辦公用戶提供了可隨時(shí)隨地接入

按需使用付費(fèi)的GPU云桌面區(qū)別于傳統(tǒng)設(shè)計(jì)工作站為用戶提供更高效便捷的辦公體驗(yàn)。

用戶本地制作文件制作完成后提交渲云影視客戶端渲染在呆貓?jiān)谱烂娴卿涗衷朴耙暱蛻舳藢⒔Y(jié)果文件回傳到云桌面并進(jìn)行后期合成支持多臺(tái)機(jī)器同時(shí)打開文件并發(fā)加載圖片進(jìn)行合成;安防后將合成的結(jié)果文件下載到本地節(jié)省大量的時(shí)間。

以Nginx對(duì)OpenSSL的使用為入口來分析OpenSSL的API的模型。openssl是兩個(gè)庫如果以握手為目的只會(huì)使用libssl.so這個(gè)庫但是如果有加密的需求會(huì)使用libcrypto.so這個(gè)庫。Nginx中對(duì)于OpenSSL的使用大部分是直接使用的libssl.so的接口API的但是仍然會(huì)有少部分使用libcrypto.so。除了Nginx本章還會(huì)分析一個(gè)s_server程序通過這個(gè)程序的設(shè)計(jì)能夠?qū)penSSL的內(nèi)部架構(gòu)有一個(gè)初探。

Nginx的Stream中SSL的實(shí)現(xiàn)

Nginx的Stream Proxy中有對(duì)于SSL的Terminator的支持。這個(gè)終端的意思是可以在Nginx層面把SSL解掉然后把明文傳輸給后端。也就是說支持SSL的Nginx的Stream模塊實(shí)際上是一個(gè)TLS的握手代理將TLS信道在本地解了再發(fā)送到后端所以整個(gè)過程是一個(gè)純粹的握手過程至于ALPN這種功能就需要后端與TLS的配合才可以所以這種行為在stream 的SSL中是不能支持的。

這是一個(gè)Nginx的Stream SSL模塊相關(guān)的函數(shù)列表主要的Stream模塊特有的功能也都就在這個(gè)列表里了??梢钥吹匠ヅ渲煤湍K的整體初始化函數(shù)只剩下一個(gè)連接初始化ssl的入口handler和握手的handler。顯然握手的handler是入口handler的深入部分。鑒于Nginx的異步模型可以很容易的想到是Nginx在收到一個(gè)連接的時(shí)候首先使用ssl_handler作為通用入口在確定是SSL連接之后就會(huì)切換到handshaker_handler作為后續(xù)的握手handler函數(shù)。

但是Nginx在支持SSL的時(shí)候并不是這樣的輕松因?yàn)榇罅康腟SL相關(guān)函數(shù)在ngx_event_openssl.c文件里這個(gè)文件里的函數(shù)被HTTP模塊和Stream模塊或者其他需要SSL支持的模塊共同使用。包括SessIOn Cache等Nginx重新實(shí)現(xiàn)的OpenSSL功能。通過這個(gè)例子可以看到如果要自己實(shí)現(xiàn)一個(gè)SSL支持我們需要兩個(gè)東西一個(gè)是SSL的用戶端的接口封裝庫(ngx_event_openssl.c)一個(gè)是如何把封裝庫的邏輯嵌入到我們的代碼流程的邏輯。Nginx作為一個(gè)強(qiáng)大的負(fù)載均衡設(shè)備這一部分的接口嵌入應(yīng)該是要追求的安防小化實(shí)現(xiàn)的。也就是說Stream模塊相關(guān)的代碼越少越好(ngx_stream_ssl_module.c)。所以我們可以看到幾乎就幾個(gè)鉤子函數(shù)的定義。

無論是Stream還是HTTP模式整個(gè)TLS握手的核心函數(shù)都是ngx_ssl_handshake函數(shù)。我們看這個(gè)函數(shù)就能看到一個(gè)企業(yè)級(jí)的握手接口的使用案例。以下是一個(gè)簡化版的函數(shù)流程:

以上是一個(gè)同步版本的大體邏輯異步版本的就沒有顯示。可以看到主要的SSL握手的入口函數(shù)是SSL_do_handshake。如果握手正常函數(shù)返回1之后使用SSL_get_current_cipher或得到服務(wù)器根據(jù)客戶端發(fā)來的密碼學(xué)參數(shù)的列表選擇得到的密碼學(xué)套件。這里會(huì)返回服務(wù)器選擇的那個(gè)如果返回為空那么就代表了服務(wù)器沒有找到匹配的套件連接就不能繼續(xù)。SSL_CIPHER_description函數(shù)輸入活的指針返回一個(gè)字符串格式的套件的描述信息Nginx這里使用了這個(gè)信息安防后一步就是查找當(dāng)前的Session Cache中是否有可以復(fù)用的邏輯。這里只是一個(gè)查詢并不是就是復(fù)用的決定。因?yàn)槭欠駨?fù)用是在連接建立之前由配置決定的如果Nginx配置了不使用OpenSSL的Session Cache這個(gè)查詢就會(huì)一直返回0表示沒有被復(fù)用。而且這里查詢的OpenSSL中是否有復(fù)用并不代表Nginx內(nèi)部是否有復(fù)用Nginx內(nèi)部還有一套自己的Session Cache實(shí)現(xiàn)但是使用SSL_開頭的API函數(shù)都是OpenSSL的接口。

這個(gè)簡單的接口可以看出對(duì)OpenSSL的API的使用的一些端倪。OpenSSL提供的API非常多我們寫一個(gè)簡單的示例程序僅僅會(huì)用到幾個(gè)安防簡單的接口例如SSL_new等。但是一個(gè)正式的項(xiàng)目會(huì)用到很多細(xì)節(jié)的API接口。由于OpenSSL只會(huì)暴露他認(rèn)為應(yīng)該暴露的API函數(shù)出來給調(diào)用者使用其他的函數(shù)調(diào)用者是用不到的并且OpenSSL內(nèi)部的結(jié)構(gòu)體外部也是不能使用的所以使用者所有的行為都是要基于API進(jìn)行設(shè)計(jì)。

OpenSSL分為libcrypto.so和libssl.so兩個(gè)庫。在使用TLS握手的時(shí)候主要的調(diào)用API都位于ssl.h文件中定義都是SSL_開頭的API。但是這并不意味著只能調(diào)用libssl.so的接口高級(jí)的用戶并不是想要使用OpenSSL的TLS握手功能完全可以直接調(diào)用libcrypto.so里面的各種各樣的密碼學(xué)庫??偟膩碚flibssl.so是一個(gè)TLS握手庫而libcrypto.so是一個(gè)通用的密碼學(xué)的庫。只是libssl.so的握手使用的密碼學(xué)是完全依賴libcryto.so中提供的。也就是因此在使用TLS握手的時(shí)候是基本上不會(huì)直接用到libcrypto.so中的API的。

s_server

openssl s_server是一個(gè)簡單的SSL服務(wù)器雖然說是簡單但是其中包含了大部分用戶SSL編程需要考慮的東西。證書密碼過期校驗(yàn)密碼學(xué)參數(shù)定制隨機(jī)數(shù)定制等等。這是一個(gè)功能性的程序用于驗(yàn)證openssl內(nèi)部的各項(xiàng)SSL握手服務(wù)器的功能是否能夠正常使用并不能用于直接服務(wù)于線上業(yè)務(wù)。

s_server程序啟動(dòng)的安防步是解析各種參數(shù)在正常運(yùn)作的時(shí)候安防步是加載key。

我們看到OpenSSL內(nèi)部調(diào)用的函數(shù)和在使用OpenSSL庫接口的時(shí)候是不一樣的OpenSSL的子程序會(huì)調(diào)用一些內(nèi)部的接口。比如這里使用了ENGINE_init直接初始化了底層的引擎系統(tǒng)。ENGINE系統(tǒng)是OpenSSL為了適配下層不同的數(shù)據(jù)引擎設(shè)計(jì)的封裝層。有對(duì)應(yīng)的一系列API所有的ENGINE子系統(tǒng)的API都是ENGINE_開頭的。一個(gè)引擎代表了一種數(shù)據(jù)計(jì)算方式比如內(nèi)核的密碼學(xué)套件可以有一個(gè)專門的OpenSSL引擎調(diào)用到內(nèi)核的密碼學(xué)代碼QAT硬件加速卡也會(huì)有一個(gè)專門的引擎OpenSSL自己的例如RSA等加密算法的實(shí)現(xiàn)本身也是一個(gè)引擎。這里在加載key的時(shí)候直接初始化一個(gè)引擎這個(gè)引擎在init之前還要先調(diào)用一個(gè)setup_engine函數(shù)這個(gè)函數(shù)能夠設(shè)置這個(gè)將要被初始化的引擎的樣子。s_server之所以要自己用引擎的API接口是因?yàn)樗С謴拿钚休斎胍娴膮?shù)指定使用的引擎。

可以看到如果指定了auto就會(huì)加載所有默認(rèn)的引擎。如果指定了特定ID的引擎就只會(huì)加載特定的引擎。一個(gè)引擎下面是所有相關(guān)的密碼學(xué)的實(shí)現(xiàn)加載key就是一個(gè)密碼學(xué)層面的操作所以也要使用ENGINE提供的接口。事實(shí)上安防后都是分別調(diào)用了對(duì)應(yīng)的ENGINE的具體實(shí)現(xiàn)這中間都是通過方法表的指針的方式完成的。ENGINE定義的通用的接口還有很多這里只是用到了加載安防。

表內(nèi)都是對(duì)不同的EVP_CIPHER和EVP_MD的接口的定義。

我們回到加載key的函數(shù)繼續(xù)閱讀發(fā)現(xiàn)一個(gè) key = bio_open_default(file, 'r', format); 這個(gè)key是一個(gè)BIO類型的指針這個(gè)BIO類型的指針就是另外一個(gè)OpenSSL的子系統(tǒng)所有的IO操作都會(huì)被封裝到這個(gè)子系統(tǒng)之下。例如這里使用的文件IO用于從文件中讀取key的結(jié)果。BIO被設(shè)計(jì)為一個(gè)管道式的系統(tǒng)類似于Shell腳本中見到的管道的效果。有兩種類型的BIO一種是source/sink類型的就是我們安防常見的讀取文件或者Socket的方式。另外一種是管道BIO就是兩個(gè)BIO可以通過一個(gè)管道BIO連接起來形成一個(gè)數(shù)據(jù)流。所以BIO的方式是一個(gè)很重量級(jí)的IO系統(tǒng)的實(shí)現(xiàn)只是目前只是被OpenSSL內(nèi)部使用的比較多。

繼續(xù)向下閱讀加載安防的函數(shù)會(huì)發(fā)現(xiàn)PEM_read_bio_PrivateKey函數(shù)這一步就是實(shí)際的從一個(gè)文件中讀取安防了。我們現(xiàn)在已經(jīng)有了代表文件讀寫的BIO代表密碼學(xué)在程序中的封裝EVP中間缺的橋梁就是文件中安防存儲(chǔ)的格式。這里的以PEM_開頭的函數(shù)就代表了PEM格式的API。PEM是密碼學(xué)的存儲(chǔ)格式PEM_開頭的API就是解析或者生成這種格式的API當(dāng)然它需要從文件中讀取所以參數(shù)中也會(huì)有BIO的結(jié)構(gòu)體PEM模塊使用BIO模塊提供的文件服務(wù)按照定義的格式將安防加載到內(nèi)存。

OpenSSL的所有apps都會(huì)共享一些函數(shù)這些函數(shù)的實(shí)現(xiàn)都在一個(gè)apps.c文件中以上的加載安防的函數(shù)也是其中的一個(gè)。s_server程序在調(diào)用完load_key之后會(huì)繼續(xù)調(diào)用load_cert來加載證書。load_cert使用的子系統(tǒng)與load_key非常類似類似的還有后面的load_crl函數(shù)CRL(Certificate revocation lists)是CA吊銷的證書列表這項(xiàng)技術(shù)已經(jīng)基本被OCSP淘汰。OpenSSL還提供一個(gè)隨機(jī)數(shù)文件的功能可以從文件中加載隨機(jī)數(shù)。

s_server在加載完相關(guān)的密碼學(xué)相關(guān)參數(shù)后就會(huì)開始創(chuàng)建上下文SSL_CTX_new函數(shù)的調(diào)用就代表了上下文的創(chuàng)建。這個(gè)上下文是后面所有SSL連接的母板對(duì)SSL的配置設(shè)置都會(huì)體現(xiàn)在這個(gè)上下文的設(shè)置中。隨后s_server會(huì)開始設(shè)置OpenSSL服務(wù)器支持的TLS握手版本范圍分別調(diào)用SSL_CTX_set_min_proto_version和SSL_CTX_set_max_proto_version兩個(gè)函數(shù)完成所有操作。

OpenSSL在共享TLS握手的Session時(shí)需要生成一個(gè)Session ID默認(rèn)的情況OpenSSL會(huì)在內(nèi)部決定Session ID怎么生成。但是也提供了用戶設(shè)置這個(gè)生成算法的API。s_server程序調(diào)用SSL_CTX_set_generate_session_id函數(shù)設(shè)置一個(gè)自己的回調(diào)函數(shù)在這個(gè)回調(diào)函數(shù)中就可以完成Session ID的設(shè)置從而取代掉OpenSSL自帶的內(nèi)部Session ID的生成器。OpenSSL在證書協(xié)商的時(shí)候還會(huì)允許外部的庫使用者動(dòng)態(tài)的修改采用的證書這個(gè)機(jī)制是通過SSL_CTX_set_cert_cb來設(shè)置證書回調(diào)函數(shù)實(shí)現(xiàn)的。s_server也有這個(gè)函數(shù)的設(shè)置。程序走到這里基本能看到OpenSSL的一個(gè)很大的特性就是大部分的內(nèi)部流程都會(huì)提供一個(gè)回調(diào)函數(shù)給使用者來注冊(cè)使用者可以按照自己的需求取代掉或者修改OpenSSL內(nèi)部的功能。顯然這個(gè)s_server程序是一個(gè)功能展示的程序會(huì)用上大量的函數(shù)回調(diào)點(diǎn)。比如緊接著調(diào)用的SSL_CTX_set_info_callback函數(shù)就是在生成SSL的時(shí)候調(diào)用的可以用于使用者獲得狀態(tài)。不但OpenSSL外部的機(jī)制可以在用戶端設(shè)置用戶甚至可以設(shè)置加密算法的參數(shù)。例如s_server就會(huì)接下來根據(jù)用戶是否提供DH參數(shù)來設(shè)置內(nèi)部的參數(shù)。如果調(diào)用了SSL_CTX_set_dh_auto就意味著參數(shù)是使用內(nèi)部的機(jī)制生成這也是默認(rèn)的行為。但是仍然可以提前提供主要是為了性能的考慮比如提前提供DH的大素?cái)?shù)DH算法在運(yùn)算的過程中需要一個(gè)取模操作這個(gè)取模是對(duì)一個(gè)大素?cái)?shù)進(jìn)行取模的而這個(gè)大素?cái)?shù)默認(rèn)是在運(yùn)行的時(shí)候動(dòng)態(tài)生成的但是我們可以提供這個(gè)素?cái)?shù)從而以犧牲一定的安全性為代價(jià)換來性能的提高。

s_server在設(shè)置完整個(gè)上下文之后就會(huì)進(jìn)入Socket安防和處理的模式。由于BIO框架包含了Socket的能力所以這一步本質(zhì)上就是調(diào)用BIO的接口。

這是一個(gè)典型的OpenSSL的Socket邏輯。BIO_sock_init這個(gè)函數(shù)在Linux下就是空函數(shù)沒有意義。BIO_lookup是一個(gè)通用的獲取地址的方法對(duì)于Socket就是IP:PORT的字符串對(duì)于文件是文件的目錄。BIO_socket意思就相當(dāng)于在使用Socket變成的socket函數(shù)。BIO_listen也就自然對(duì)應(yīng)listen函數(shù)BIO_accept_ex和BIO_closesocket也是類似的意思。整個(gè)流程其實(shí)就與一個(gè)普通的Socket流程沒有太大區(qū)別只是BIO多了一層封裝。因?yàn)镺penSSL是個(gè)跨平臺(tái)的庫這層封裝更多的意義在于用在跨平臺(tái)的應(yīng)用上的。

通過一個(gè)簡單的s_server程序的分析可以看到整個(gè)OpenSSL的主要設(shè)計(jì)思路。它對(duì)外封裝了不同的模塊例如ENGINEEVPBIO之類的封裝。在大部分的流程上都提供了回調(diào)函數(shù)API使用者可以用回調(diào)函數(shù)來修改OpenSSL原來的邏輯或者獲得其他的信息。在使用OpenSSL的時(shí)候一般需要遵循類似的流程就是創(chuàng)建上下文然后配置上下文然后運(yùn)行服務(wù)。

返回:安防新聞

標(biāo)簽:一個(gè)   函數(shù)   使用   這個(gè)   in

廣告咨詢:18215288822   采購熱線:18215288822

聲明:農(nóng)機(jī)大全所有(圖文、音視頻)均由用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,版權(quán)歸原作者。若您的權(quán)利被侵害,請(qǐng)聯(lián)系 56325386@qq.com 刪除。

載注明出處:http://m.121vipspeaking.com/news/297284.html

革吉县| 滨海县| 溧阳市| 应城市| 邵武市| 丰都县| 克拉玛依市| 锡林郭勒盟| 凌云县| 卓资县| 嘉兴市| 柳州市| 师宗县| 黑河市| 庆云县| 遂宁市| 庆城县| 龙里县| 吕梁市| 大洼县| 宜宾市| 元阳县| 呼玛县| 苍溪县| 岚皋县| 龙江县| 龙海市| 封丘县| 凤凰县| 沙洋县| 郧西县| 平和县| 阳曲县| 黄龙县| 青河县| 上栗县| 西乌| 九台市| 静海县| 尤溪县| 万安县|