ssl是通信鏈路的附加層。能夠包含不少協議。https, ftps, .....shell
ssh只是加密的shell,最初是用來替代telnet的。經過port forward,也可讓其餘協議經過ssh的隧道而起到加密的效果。瀏覽器
SSL是一種國際標準的加密及身份認證通訊協議,您用的瀏覽器就支持此協議。SSL(Secure Sockets Layer)最初是由美國Netscape公司研究出來的,後來成爲了Internet網上安全通信與交易的標準。SSL協議使用通信雙方的客戶證書以及CA根證書,容許客戶/服務器應用以一種不能被偷聽的方式通信,在通信雙方間創建起了一條安全的、可信任的通信通道。它具有如下基本特徵:信息保密性、信息完整性、相互鑑定。 主要用於提升應用程序之間數據的安全係數。SSL協議的整個概念能夠被總結爲:一個保證任何安裝了安全套接字的客戶和服務器間事務安全的協議,它涉及全部TC/IP應用程序。
SSH的英文全稱是Secure SHell。經過使用SSH,你能夠把全部傳輸的數據進行加密,這樣「中間人」這種攻擊方式就不可能實現了,並且也可以防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是通過壓縮的,因此能夠加快傳輸的速度。SSH有不少功能,它既能夠代替telnet,又能夠爲ftp、pop、甚至ppp提供一個安全的「通道」。SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能鏈接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。SSH的安全驗證是如何工做的從客戶端來看,SSH提供兩種級別的安全驗證。第一種級別(基於口令的安全驗證)只要你知道本身賬號和口令,就能夠登陸到遠程主機。全部傳輸的數據都會被加密,可是不能保證你正在鏈接的服務器就是你想鏈接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到「中間人」這種方式的攻擊。第二種級別(基於密匙的安全驗證)須要依靠密匙,也就是你必須爲本身建立一對密匙,並把公用密匙放在須要訪問的服務器上。若是你要鏈接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求以後,先在你在該服務器的家目錄下尋找你的公用密匙,而後把它和你發送過來的公用密匙進行比較。若是兩個密匙一致,服務器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟件。客戶端軟件收到「質詢」以後就能夠用你的私人密匙解密再把它發送給服務器。用這種方式,你必須知道本身密匙的口令。可是,與第一種級別相比,第二種級別不須要在網絡上傳送口令。第二種級別不只加密全部傳送的數據,並且「中間人」這種攻擊方式也是不可能的(由於他沒有你的私人密匙)。可是整個登陸的過程可能須要10秒。安全
OpenSSL------一個C語言函數庫,是對SSL協議的實現。服務器
OpenSSH-----是對SSH協議的實現。網絡
ssh 利用 openssl 提供的庫。openssl 中也有個叫作 openssl 的工具,是 openssl 中的庫的命令行接口。ssh
從編譯依賴上看:函數
openssh依賴於openssl,沒有openssl的話openssh就編譯不過去,也運行不了。工具
HTTPS可使用TLS或者SSL協議,而openssl是TLS、SSL協議的開源實現,提供開發庫和命令行程序。openssl很優秀,因此不少涉及到數據加密、傳輸加密的地方都會使用openssl的庫來作。
能夠理解成全部的HTTPS都使用了openssl。以root身份執行命令:grep -l 'libssl.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u,能夠看到哪些進程加載了老版本的openssl庫。加密