马哥linux学习笔记:openssl的使用
linux中主要通過openssl,gpg等工具來實現加密解密機制,這里我只介紹下openssl的使用方法:
? ? openssl主要由三部分組成:
? ? ? ? libencrypto庫
? ? ? ? libssl庫
? ? ? ? openssl多用途命令行工具
? ? 前兩種是開發調用openssl功能時專用的一些接口,這里就不做過多表述了,現在只介紹一下openssl的一些簡單用法:
? ? openssl從多子命令分為三類:標準命令,消息摘要命令(dgst子命令),加密命令(enc子命令)
? ? 常用用法:
? ? ? ? 對稱加密:
? ? ? ? ? ? 加密:openssl ?enc -e -des3 -a -salt -in fstab -out fstab.des3
? ? ? ? ? ? 解密:openssl enc -d -des3 -a -salt -out fstab1 -in fstab.des3
? ? ? ? 單向加密:
? ? ? ? ? ? dgst命令:openessl dgst -md5 fstab
? ? ? ? 生成用戶密鑰:
? ? ? ? ? ? passwd命令:openssl passwd -1 -salt 123456
? ? ? ? 生成隨機數:
? ? ? ? ? ? rand命令:openssl rand -hex 10
? ? ? ? ? ? ? ? ? ? ? openssl rand -base64 10
? ? ? ? 生成密鑰:
? ? ? ? ? ? 生成私鑰:(umask?077;??openssl??genrsa??-out??/PATH/TO/PRIVATE_KEY_FILE??NUM_BITS)
? ? ? ? ? ? 提出公鑰:openssl rsa -in ./my.pem -pubout
? ? ? ? ? ? ()中的命令表示打開一個子shell執行命令,這樣修改的umask值不影響當前shell
下邊介紹一下如何用openssl構建私有CA;
? ? 創建私有CA要用到的配置文件為:/etc/pki/tls/openssl.cnf
? ? 在確定配置為CA的服務器上生成一個自簽的證書,并未CA提供所需要的目錄及文件即可;
? ? 具體步驟:
? ? ? ? (1)生成私鑰
? ? ? ? ? ? ? ? (umask 077;openssl genrsa -out /etc/pki/CA/cakey.pem 4096)
? ? ? ? (2)生成自簽名證書:
? ? ? ? ? ? ? ? openssl req -new -x509 -key /etc/pki/CA/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
? ? ? ? ? ? 填入相關信息,則自簽證書完成;
? ? ? ? ? ? ? ??-new:生成新證書簽署請求;
? ? ? ? ? ? ? ? -x509:生成自簽格式證書,專用于創建私有CA時;
? ? ? ? ? ? ? ? -key:生成請求時用到的私有文件路徑;
? ? ? ? ? ? ? ? -out:生成的請求文件路徑;如果自簽操作將直接生成簽署過的證書;
? ? ? ? ? ? ? ? -days:證書的有效時長,單位是day;
? ? ? ? (3)為CA提供所需的目錄及文件(不存在就需要手動創建)
? ? ? ? ? ? ? ??mkdir??-pv??/etc/pki/CA/{certs,crl,newcerts}
? ? ? ? ? ? ? ? touch??/etc/pki/CA/{serial,index.txt}
? ? ? ? ? ? ? ? echo??01?>?/etc/pki/CA/serial
? ? 至此,私建的CA已完成,如果要用到證書進行安全通信的服務就可以向其請求簽署證書了;
? ? 這里以httpd服務為例,簡單描述一下申請證書的過程:
? ? 具體步驟:
? ? ? ? (1)用到證書的主機生成私鑰:
? ? ? ? ? ? ? ? mkdir /etc/httpd/ssl
? ? ? ? ? ? ? ? cd /etc/httpd/ssl
? ? ? ? ? ? ? ? (umask 077;openssl getrsa -out /etc/httpd/ssl/httpd.key 4096)? ? ? ? ? ? ? ??
? ? ? ? (2)生成證書簽署請求文件:
? ? ? ? ? ? ? ? openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
? ? ? ? (3)將生成的httpd.csr文件以安全的方式發送給CA主機,這里只是測試,我直接用scp復制了
? ? ? ? ? ? ? ? scp /etc/httpd/ssl/httpd.csr root@192.168.0.104:/tmp/
? ? ? ? (4)在CA主機上簽署證書
? ? ? ? ? ? ? ??openssl?ca?-in?/tmp/httpd.csr?-out?/etc/pki/CA/certs/httpd.crt?-days?365
? ? ? ? (5)將簽署后的證書以安全可靠的方式交付給請求主機
? ? ? ? ? ? ? ? scp /etc/pki/CA/certs/htttpd.crt root@192.168.0.100:/etc/httpd/ssl/
? ? ? ? 至此,申請證書的流程完畢。
? ?由于一些特殊的原因,我們也許會申請吊銷證書,下邊說說如何吊銷證書:
? ? 具體步驟:
? ? ? ? (1)客戶端獲取要吊銷的證書的serial(在使用證書的主機執行)
? ? ? ? ? ? openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
? ? ? ? (2)CA機根據客戶提交的serial和subject信息,對比與本機數據庫index.txt中存儲的是否一致,一致的話就予以吊銷; ? ? ? ? ? ?
? ? ? ? ? ? ? ? openssl ca -revoke /etc/pki/CA/newcerts/01.pem
? ? ? ? (3)生成吊銷證書的吊銷編號(第一次吊銷證書時執行)
? ? ? ? ? ? ? ? echo 01 > /etc/pki/CA/crlnumber
? ? ? ? (4)更新證書吊銷列表
? ? ? ? ? ? ? ? openssl ca -gencrl -out /etc/pki/CA/crl/httpd.crl
? ? ? ? (5)查看crl文件;
? ? ? ? ? ? ? ? openssl crl -in /etc/pki/CA/crl/httpd.crl -noout -text
? ? 至此,證書已被吊銷。
轉載于:https://blog.51cto.com/amengmon/1732645
總結
以上是生活随笔為你收集整理的马哥linux学习笔记:openssl的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web服务器 字体.svg/.woff/
- 下一篇: Linux rpm 命令参数