openssl經常使用操做總結

下面說的是命令行下的證書操做,程序實現要用libopenssl和相關庫,道理同樣,只是改成調用函數而已,操做各類bio,能夠參考下面的連接:算法

openssl c 經常使用函數參考:sql

http://www.javashuo.com/article/p-adefljmb-cm.html安全

 

openssl是認證機制,是一種在tcpip上的協議,有了他,服務器對外,只開放4××端口,全部的服務都經過這個與外界聯繫,增強安全性,
這個協議中有兩層,第一層是身份驗證,第二層是通信層,在普通的加密中只有通信的內容的加密,沒有第一個,第一個,他使用非對稱加密算法實現的,經過互相交換公鑰,並用本身的私鑰加密數據發送hello 接受方用對方的公鑰打開,以肯定,對方有正確的私鑰,就肯定對方是應有的身份,公鑰在證書中保存,實際通信中,交換的是證書。服務器


獲得信任的證書,纔會互相交換公鑰,什麼樣的證書是受信任的成了一個問題。因此用des3算法獲得key文件後(key文件裏有公鑰私鑰對,即密鑰)用req生成 證書請求  交給信任機構CA進行簽名(用的X509這個算法可以還原數據,)證書請求中之含有公鑰,session

獲得公鑰後檢查裏面的簽名數據,若爲信任的即交換,用獲得信任的證書能夠用這個證書給下級簽名,這樣一級一級的下去,在互聯網上,若信任危機出現,能夠追溯到最上級的CA,最上級的CA固然是有本身的 證書和密鑰,可誰給CA簽名呢,,,他是自簽名的,他誰都不信任,咱們信任他就行了,他不須要誰信任他,TMD。這還講理嗎。tcp


openssl使用:
    生成一個密鑰即key文件 openssl genrsa -des3 -out file.key
    -des3說明非對稱加密算法用的是des3,openssl支持別的加密算法,如今用這一個,md5也是非對稱的,具體用那種實在驗證身份的時候雙方協議確認一種的。會提示輸入一個密鑰密碼,
    好多應用不須要密碼,有其實在自簽名系統裏,能夠去掉密碼:
    openssl rsa -in file.key -out file.key 輸入密碼便可解密。
用key文件生產證書請求:輸入我的信息
    openssl req -new -key file.key -out file.csr
自簽名:
    openssl x509 -req -in file.csr -out file.crt -signkey file.key -days 3333
    -days 說明證書失效日期,固然也有參數說明絕對日期。這是自簽名這個就能夠看成CA了,給別的證書請求籤名了
        openssl x509 -req -in new.csr -out new.crt -signkey new.key -CA file.crt -CAkey file.key -CAcreateserial
        cacreateserial說明要建立證書串號,這個在本身創建了CA機構的時候有用,本身創建一個CA機構,有助於管理證書,好比:吊銷,增長等等。
這樣就實現了自簽名證書給下級簽名,之後的事就是用這些簽過名的證書連接服務器了,注意:能夠制定OPENSSL.CONFIG文件,有些配置說明對給下級簽名的信息字段有一些要求,好比默認的是要機構,國家字段同樣。函數

相關配置:
    openssl 用 req  ca等命令時會根據配置文件行動,用-config 制定一個,不然使用默認配置,在配置文件中,分爲短值和長值,短值就是直接給值如:pathlen:0 (能夠容許的下發證書個數)長值是一個session如:x509_extensions=usr_user   下面有一個 [ usr_user ]的session,寫入相關的參數。
    在ca的配置中,用配置文件指定,用-config 制定
    在使用x509命令時,用 -extfile制定 配置文件配置文件要有一個 extensions變量制定用那一個session,post

查看證書:
    openssl -x509 -in root.crt -noout -text加密


postgresql的ssl配置:
    兩個配置文件 一個是postgresql.confi文件,打開ssl,
    一個是pg_hba.conf文件,指明那些ip是用ssl連接的,和一些權限,是否是要求客戶端驗證等。
    httpssl dbname user   cert   clientcert=1
    四個ssl證書文件:
    server.key   必須是沒喲密碼的
    server.crt
    root.crt    若是採用自簽名的體系,這兩個要同樣,也就是咱們CA的cert
    root.crl  這個是吊銷單,由本身的CA機構生成。
    用ssl連接pg時,生產crt的req的common name 要和dbuser的名字一致。.net

CA機構的創建。     就是一個目錄,好在裏面記錄東西。     mkdir demoCA     touch demoCA/index.txt     touch demoCA/private/     .....     能夠用源碼中的腳本方便的生成     CA.sh -newca :它還有寫別的參數,方便CA機構的運做。     咱們的CA.key 在demoCA/private/cakey.pem     咱們的CA.crt   demoCA/cacert.pem     生成一個下級的key和crt     CA.sh -newreq     CA.sh -signCA      還有CA.sh -newcert更方便了     opoenssl ca這個命令使用ca機構的,要求有個文件夾,裏面有什麼簽過名的證書的一些數據,之後給下級簽名都會修改相應的數據,     openssl ca -gencrl -out root.crl -days 333生產吊銷單,說明裏面有的證書以做廢不能連接。-day3是吊銷單的有效日期。 這個命另要用當前目錄下的 demoCA裏面的數據     提早吊銷證書:           openssl ca -revoke oldcert.pem

相關文章
相關標籤/搜索