日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssl协议及开源实现openssl

發布時間:2024/1/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssl协议及开源实现openssl 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址:https://blog.csdn.net/jinbusi_blog/article/details/76039206?locationNum=4&fps=1

ssl協議

SSL: (Secure Socket Layer)安全套接層,ssl是一套安全協議,被應用層調用,當http調用ssl協議時被稱為https,當ftp調用ssl協議時被稱為sftp。?
lls是一個協議的集合 ,其中包括:?

Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換

ChangeCipherSpec協議:一條消息表明握手協議已經完成;

Alert協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接扔可繼續,只是會給出錯誤警告

Record協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等;

HTTPS協議:就是"HTTP協議"和"SSL/TLS協議"的組合。"HTTP over SSL"或"HTTP over TLS", 對http協議的文本數據進行加密處理后,成為二進制形式傳輸。

?ssl起源

Netscape:1994?

v1.0,

1995 : sslv2.0

1996 : v3.0

IETF : 1999

tlsv1.0

2006 : tls v1.1 RFC4346

2008 : tls v1.2

2015 : tls v1.3

分層設計

  • 最底層:基礎算法原語的實現,aes,rsa,md5
  • 向上一層,各種算法的實現;
  • 再向上一層 : 組合算法實現的半成品;
  • 用各種組件拼裝而成的各種成品密碼學協議軟件。
  • 通信流程

    ssl通信的兩個階段:

    兩階段協議,分為握手階段和應用階段

    握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),并協商通信中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通過MasterSecret生成。

    應用階段: 在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信

    https的通信流程:

    客戶端向服務端發起請求,服務端將自己的證書發送給客戶端,

    客戶端使用內置于系統中的ca的公鑰進行解密,解密成功即表示ca是合法的。

    如果有需要客戶端將自己的證書發送給客戶端

    客戶端生成一個自己的對稱密鑰,使用服務端的公鑰進行加密,發送給服務端。

    服務端使用自己的私鑰解密收到的加密過的對稱密鑰,

    雙方使用對稱密鑰進行通信,(http協議調用ssl協議對自身的數據進行密鑰加密,被加密的http數據為二進制)

    ssl協議的開源實現:OpenSSL

    ssl作為協議出現,協議是被具體定義的概念,openssl是ssl的具體的實現,openssl也是一套開源的軟件。

    openssl包括三方面的組件:

    ? ? 1.openssl:多用途的命令行工具,包openssl

    ? ? 2.libcrypto: 加密算法庫,包openssl-libs

    ? ? 3.libssl: 加密算法實現模塊庫,包nss

    openssl工具使用

    openssl支持交互式模式,指定參數。

    交互式:

    ? :幫助

    OpenSSL> ?
    openssl:Error: '?' is an invalid command.

    Standard commands
    asn1parse ? ? ? ? ca ? ? ? ? ? ? ? ?ciphers ? ? ? ? ? cms ? ? ? ? ? ? ??
    crl ? ? ? ? ? ? ? crl2pkcs7 ? ? ? ? dgst ? ? ? ? ? ? ?dh ? ? ? ? ? ? ? ?
    dhparam ? ? ? ? ? dsa ? ? ? ? ? ? ? dsaparam ? ? ? ? ?ec ? ? ? ? ? ? ? ?
    ecparam ? ? ? ? ? enc ? ? ? ? ? ? ? engine ? ? ? ? ? ?errstr ? ? ? ? ? ?
    gendh ? ? ? ? ? ? gendsa ? ? ? ? ? ?genpkey ? ? ? ? ? genrsa ? ? ? ? ? ?
    nseq ? ? ? ? ? ? ?ocsp ? ? ? ? ? ? ?passwd ? ? ? ? ? ?pkcs12 ? ? ? ? ? ?
    pkcs7 ? ? ? ? ? ? pkcs8 ? ? ? ? ? ? pkey ? ? ? ? ? ? ?pkeyparam ? ? ? ??
    pkeyutl ? ? ? ? ? prime ? ? ? ? ? ? rand ? ? ? ? ? ? ?req ? ? ? ? ? ? ??
    rsa ? ? ? ? ? ? ? rsautl ? ? ? ? ? ?s_client ? ? ? ? ?s_server ? ? ? ? ?
    s_time ? ? ? ? ? ?sess_id ? ? ? ? ? smime ? ? ? ? ? ? speed ? ? ? ? ? ??
    spkac ? ? ? ? ? ? ts ? ? ? ? ? ? ? ?verify ? ? ? ? ? ?version ? ? ? ? ??
    x509 ? ? ? ? ? ? ?

    Message Digest commands (see the `dgst' command for more details)
    man dgst 查看此類命令的幫助
    md2 ? ? ? ? ? ? ? md4 ? ? ? ? ? ? ? md5 ? ? ? ? ? ? ? rmd160 ? ? ? ? ? ?
    sha ? ? ? ? ? ? ? sha1 ? ? ? ? ? ? ?

    Cipher commands (see the `enc' command for more details)
    man enc 查看此類命令的幫助?
    aes-128-cbc ? ? ? aes-128-ecb ? ? ? aes-192-cbc ? ? ? aes-192-ecb ? ? ??
    aes-256-cbc ? ? ? aes-256-ecb ? ? ? base64 ? ? ? ? ? ?bf ? ? ? ? ? ? ? ?
    bf-cbc ? ? ? ? ? ?bf-cfb ? ? ? ? ? ?bf-ecb ? ? ? ? ? ?bf-ofb ? ? ? ? ? ?
    camellia-128-cbc ?camellia-128-ecb ?camellia-192-cbc ?camellia-192-ecb ?
    camellia-256-cbc ?camellia-256-ecb ?cast ? ? ? ? ? ? ?cast-cbc ? ? ? ? ?
    cast5-cbc ? ? ? ? cast5-cfb ? ? ? ? cast5-ecb ? ? ? ? cast5-ofb ? ? ? ??
    des ? ? ? ? ? ? ? des-cbc ? ? ? ? ? des-cfb ? ? ? ? ? des-ecb ? ? ? ? ??
    des-ede ? ? ? ? ? des-ede-cbc ? ? ? des-ede-cfb ? ? ? des-ede-ofb ? ? ??
    des-ede3 ? ? ? ? ?des-ede3-cbc ? ? ?des-ede3-cfb ? ? ?des-ede3-ofb ? ? ?
    des-ofb ? ? ? ? ? des3 ? ? ? ? ? ? ?desx ? ? ? ? ? ? ?idea ? ? ? ? ? ? ?
    idea-cbc ? ? ? ? ?idea-cfb ? ? ? ? ?idea-ecb ? ? ? ? ?idea-ofb ? ? ? ? ?
    rc2 ? ? ? ? ? ? ? rc2-40-cbc ? ? ? ?rc2-64-cbc ? ? ? ?rc2-cbc ? ? ? ? ??
    rc2-cfb ? ? ? ? ? rc2-ecb ? ? ? ? ? rc2-ofb ? ? ? ? ? rc4 ? ? ? ? ? ? ??
    rc4-40 ? ? ? ? ? ?seed ? ? ? ? ? ? ?seed-cbc ? ? ? ? ?seed-cfb ? ? ? ? ?
    seed-ecb ? ? ? ? ?seed-ofb ? ? ? ? ?zlib

    非交互方式:

    enc: (encrypt)加密或解密,用于對稱加密

    -e : 加密

    -d : 解密

    -des3 : 指定加密算法des3

    -a

    -salt : 加鹽

    -in : 輸入的文件

    -out : 輸出的文件

    例子:

    加密

    # openssl enc -e -des3 -a -salt -in /etc/passwd -out ./haha.ssl

    enter des-ede3-cbc encryption password:

    Verifying - enter des-ede3-cbc encryption password:

    # ll /etc/passwd ./haha.ssl

    -rw-r--r--. 1 root root 3329 7月 14 18:21 /etc/passwd

    -rw-r--r-- 1 root root 4542 7月 16 17:02 ./haha.ssl

    解密:

    # openssl enc -d -des3 -a -salt -in ./haha.ssl -out ./haha.txt

    enter des-ede3-cbc decryption password:

    dgst用于單向加密,即生成哈希值

    -md5 : 指明算法

    例子:

    # openssl dgst -md5 haha.txt MD5(haha.txt)= 7d75659008a5a2f28cac1d2582d28491passwd 生成密碼的哈希值:-1(數字1) : md5算法-salt 指定加的鹽例:[root@localhost ~]# openssl passwd -1Password:Verifying - Password:$1$2otXR/.E$e2e0kTulm8LiSAKEgjKeD/指定加鹽,但是加鹽之后只輸入了一次密碼# openssl passwd -1 -salt asdPassword:$1$asd$49QSDotWo6cyq5JpfBDQ4.

    rand: 生成隨機數
    格式openssl rand 編碼方式 字節數。
    -base64 使用base64編碼格式
    -hex 使用hex編碼格式

    # openssl rand -hex 2 380d # openssl rand -base64 2 UR8= genras 生成私鑰(僅生成私鑰,公鑰是從私鑰中提取出來的) -out 生成的密鑰文件 -des 使用對稱密鑰對生成的非對稱密鑰文件機密(可選參數) 格式 openssl genras -out 文件 -des 非對稱密鑰長度(多少位) 生成非對稱密鑰 openssl genras -out /root/haha.key Generating RSA private key, 1024 bit long modules ..................................++++++ ..................++++++ e is 65537 (0x10001) 指定使用對稱密鑰對生成的密鑰文件加密 # openssl genras -out /root/haha-des.key -des 1024 Generating RSA private key, 1024 bit long modulus ......++++++ .++++++ e is 65537 (0x10001) Enter pass phrase for /root/haha-des.key: Verifying - Enter pass phrase for /root/haha-des.key: 使用umask決定文件權限 # (umask 066 ; openssl genrsa -out jinbus.key -des 2048) Generating RSA private key, 2048 bit long modulus .................................+++ ...................+++ e is 65537 (0x10001) Enter pass phrase for jinbus.key: Verifying - Enter pass phrase for jinbus.key: [root@localhost ~]# ll jinbus.key -rw------- 1 root root 1738 7月 16 17:39 jinbus.key

    ras顯示密鑰

    -in 獲取公鑰的私鑰文件

    -pubout從私鑰中獲取公鑰

    -out 保存獲取的公鑰的文件

    例: 查看文件中的私鑰 # openssl ras -in jinbus.key Enter pass phrase for jinbus.key: writing RSA key -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEA3WuQa0EZ91BC2M9an99TqX5FJlBCqDSXuM/DS6RDzPuY6CwQ l7nC11sMGxqC3ilXcfIKuCiKAX6uuAXI3Kskno5o8ftjyS1caiOdboTuUpqVaWFw iGCygbNWKKrgV01b3FN/InrX46SGB4KlJ/soCl+kNa3MF4PiVowGKaVzepJJD8X6 hElaVIumQPKjSx7ZKiI/e89HnwxAGUTxtr6Oq3EcCSuXPKhz+FaAw9GsW0wKevyw sUkGsEAWA2DZRyw3n5+rsVJn+BbIoURIW2cPiXhSnSl2xP57ThtogPtro2iv3O3C 7+9xczsahG3GbN+NwK4FGT+JZH5AJj18rk+6ywIDAQABAoIBADhUojQ3JsT9fVQt RJABwAYR4sPBjYO/hY32BWhcDQe8RoVimIIRN1mUhzrp/rtIZz/M5R8+6QVCVm7o wdYqEDHqZxaQ7y0CRk2Wa/nvBbasLzDVIkz/1MocduH3vwVW3/TopSJ/gCcg9xw4 B45pXiFtfZhOc+rTmaSNERBNUFixH0ryxFBqkuPb1bUaWumnOhMSIwgpkiCzy3on v8/BuLHP3ySFb+94QvOsqInV2uYqXfLw7Tks2ETxmapvssWHzigrnvl5JyFb/UMH rw5y4DCT+Ha9Brp22KuzBJx04UeCfAjVAlAiLUnjJH/IupNmCQhIsxW72IM+DdnJ GkM4K3kCgYEA/uOVvFpwegQ/LAVKpNyOs+KYz17Oj/VXcrxjiCjFm213bH/Mnb+k jhP/HNov2AGQTvNk+FwzjGIX+fMosNcb7+VegKA/opxWSJbw4tdaJK0SZmTFWJ33 JyXdKrsW8nA7cxKKaAwrKdnHBo9RXR3VomxsgmjvVVyt04FPJp1zLy8CgYEA3mKi Jr7cbwYkcMKuBx9JkROTO3mAnPkicYuxH71FPPMB8mnPLQDEK/gne2Wcad57Olmv hDgAhyEYHdgIay3FU3Fy0kWozXUha+U3MIq7BhuMH43AsjxgoGHbUzM8v6OKyDOY HBbH9UzUW6WuLaP39q+xrq/mWQxN4cDA4xqyZyUCgYBWsewVM6G8LsOZ4nbgGlDD aJhXOEUD/Avxb5hfEJcd5Z7QHavoH+4FkVGda60ISIfgArNeMmYqIpdLIeS+OXw8 HYUGNPtQAOLsL8LhNSRpAyEWCMKDAL+25g8S4K3OalQeMLk46KKpynQCjC69gE9Q vpYtySlWnH5XSU01sioiawKBgQCENJzzbcn8Uul9A6+T2lzQ25NO6zezmkSIviQp m0q7JjiFFbQtq+Pzw84tBMZNBg+6K7E1aFmf++Orck/m78n8hlhdez4UDss0qor5 16/BvMS7yXjCPTSwhBxwROibgS0zQcDvCfgL84XXihKXXYA/bkmycS3+yFrQl9fT 634d5QKBgBbPFkeAaGjzmLgIAfG1l/SIwjJhvH2n+xUt2YtV0VR9A07HKR/dda/9 L8vOlfegi3bODf+gwABOecbfKayzv6P+yQX6gBLaNvCXr1eE2Ob76Iwi2wb7UplL 3AU54zZlDFvH8YRl5fUVZGeJjyvGatViwuVDLvYCEz5tGos4rTyo -----END RSA PRIVATE KEY-----

    req請求

    -new : 生成新證書簽署請求

    -x509 : 專用于CA生成自簽證書

    -key : 生成請求時用到的私鑰文件

    -days n : 證書的有效期限

    -out /PATH/TO/SOMECERTFILE : 證書的保存路徑

    x509查看證書中的信息

    格式: openssl x509 -in 文件名稱 -noout

    -text|issuer|subject|serial|dates

    openssl x509 -in 證書 -noout -text : 查看證書

    ca 生成ca證書

    -days 證書有效期

    -in 證書的申請文件

    -out 生成的證書

    ?

    ?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的ssl协议及开源实现openssl的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲人成人 | 国产成人综合欧美精品久久 | 亚洲天堂国产 | 激情伊人 | 嫩草影院懂你的 | 成人免费一区二区三区在线观看 | 免费日韩av | 99插插| 爱福利视频广场 | 青草视频在线播放 | 涩涩网站在线 | 91国视频| 久久久老熟女一区二区三区91 | 中文字幕四区 | 中文在线资源天堂 | 成人在线精品 | 亚洲精品视频免费看 | 森泽佳奈在线播放 | 30一40一50女人毛片 | 国产极品一区二区 | 三级性生活视频 | 伊人影院视频 | 91香蕉国产在线观看软件 | 日本在线不卡一区二区三区 | 91视频a| 久久国产一区二区三区 | 激情视频网站在线观看 | 国产成人啪免费观看软件 | 国产免费一区二区三区免费视频 | 久久爱资源网 | 免费看黄色a级片 | 色综合天天射 | 成人免费在线观看网站 | 成人午夜福利视频 | 91影院在线播放 | 91网址在线播放 | 91sex国产 | 中文字幕一区二区三区电影 | 国产一级大片在线观看 | 亚洲www | 精品欧美乱码久久久久久1区2区 | 欧美日韩二三区 | 国产成人在线电影 | 一区二区在线免费观看视频 | 五月激情婷婷在线 | 涩涩的视频在线观看 | 二区在线观看 | 亚洲手机视频 | 亚洲综合小说网 | 风间由美在线视频 | 日韩区在线观看 | 中文字幕在线看片 | 我们的2018中文免费看 | 成人在线手机视频 | 在线观看免费国产视频 | 久久天天躁狠狠躁夜夜av | 操在线视频 | 欧美日韩精品在线观看 | 欧美揉bbbbb揉bbbbb | 国产成人无码精品久久 | 久久成人激情 | 国产欧美日韩中文字幕 | 成人性生交生交视频 | 免费欧美黄色片 | 国产精品一卡二卡在线观看 | 久久久久无码国产精品 | tube日本69第一次 | 麻豆福利在线 | 国产精品久久久久永久免费看 | 免费在线看黄色 | 中文字幕有码在线观看 | 亚洲免费精品视频在线观看 | 啪啪无遮挡 | 日韩狠狠| av av片在线看 | 日本 奴役 捆绑 受虐狂xxxx | 禁果av一区二区三区 | 黄色在线网 | 午夜影院体验区 | 一级黄色视 | 黄网站视频在线观看 | 岛国午夜视频 | 美女脱裤子让男人捅 | 亚洲精选在线 | 欧美在线精品一区 | 国产污视频在线播放 | 91青青视频 | 日本网站免费观看 | 日韩有色| 北条麻纪在线观看aⅴ | 嫩草在线视频 | 九草av | 久久久久这里只有精品 | 国产福利小视频在线 | 色综合久久中文字幕无码 | 日韩国产区| 蜜臀av中文字幕 | 日日躁夜夜躁白天躁晚上躁91 | 以女性视角写的高h爽文 |