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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenSSL加密与证书

發布時間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenSSL加密与证书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

加密

  • 身份的驗證?????? (非對稱加密)
  • 數據的加密??????? (對稱加密)
  • 數據的完整性????? (單向加密)
  • 三者的聯合使用會保證數據的安全機制

    A:發送者? B:接收方

    ?? A的操作:

    • A使用單向加密算法獲得發送數據(文件)的特征碼
    • A使用自己的私鑰來加密數據(文件)的特征碼
    • A使用對稱加密來對數據進行加密,生成一個一次性會話密鑰Session Key,
    • A使用B的公鑰加密生成的Session Key
    • A發送整個加密后的文件

    ? B的操作:

    • B接收到A發送來的加密文件
    • B使用自己的私鑰解密得到數據部分的Session Key
    • B使用Session Key解密加密的文件
    • B使用A的公鑰確認A的身份
    • B使用單向加密對A發來的數據部分提取特征碼
    • B使用A的公鑰解密A加密的數據部分的特征碼,
    • B比對兩個特征碼的異同

    如果其中任何一步出現問題則B就認為該數據不安全

    好了,數據可以安全發送了,但是A,B的公鑰對方是怎么得到的呢?A,B怎么信任對方的公鑰呢?

    ?? 這就需要用到證書了,證書的內容:1.公鑰和證書有效期2.擁有者信息3.證書的用途4.CA的信息5.CA的簽名信息

    ????? 簽名的過程:使用自己的私鑰加密其發送文件的特征碼

    ?? 首先,大家得知道操作系統中已經固定的存有CA的證書,當你裝好你的操作系統時。對于A,B而言,需要使用該證書來確定來給自己發證的CA的真實性,當A,B通信時也需要對方的證書,根據保存的CA的證書,A,B可以對對方證書的簽名信息解密,得到對方公鑰等信息的特征碼,然后通過對公鑰等信息的單向加密獲得特征碼,對比特征碼可以得知對方的公鑰的是否可靠。當然操作系統中有多個CA的證書,允許A,B雙方的發證CA不是同一機構。

    ? 下面我們來討論證書的頒發過程

    ??? 首先我們需要有一個CA,然后我們才可以給別人發放證書。在RedHat中我們需要以下的做法:

    ??? #vim /etc/pki/tls/openssl.cnf

    ??? 修改 dir???????????? = ../../CA????????????? # Where everything is kept

    ????? 為 dir???????????? = /etc/pki/CA????????????? # Where everything is kept

    ???? 保存后退出???

    ?? #cd? /etc/pki/CA

    ?? #touch index.tx

    ?? #mkdir newcerts? certs? crl??

    ?? 建立一個自簽的證書

    ?? #openssl genrsa 1024 > ./private/cakey.pem

    ?? #openssl req?? -new? -X509 –key? ./private/cakey.pem? -out cacert.pem

    好了,CA的證書做好了

    ?? 接下來我們用A來進行證書的請求

    ???? 生成A的私鑰my.key

    ???? #openssl genrsa –out my.key? 1024?????????? [可以提取my.key的公鑰 openssl rsa –in? -my.key –pubout? -out pub_my.key]

    ???? 生成A的證書請求my.csr

    ???? #openssl req –new? -k? my.key? -out? my.csr?

    ?????? 彈出選項,用于完整的A的信息(國家,省份,城市,組織,部門,A的主機或服務器名稱,郵件)? [更改默認的選項 vim /etc/pki/tls/openssl.cnf]

    ? A主機將自己的證書請求傳給CA

    ??? CA根據A的證書請求文件my.csr生成A的證書my.crt并簽署

    ???? # openssl ca –in?? my.csr? -out? my.crt? -days? 3660?

    ?

    ?

    在RedHat中簡單生成證書,密鑰等

    ?? cd? /etc/pki/tls/certs/

    ???? make? a.key

    ???? make? a.pem

    ???? make?? a.crt

    依靠Makefile文件來實現的

    UTF8 := $(shell locale -c LC_CTYPE -k | grep -q charmap.*UTF-8 && echo -utf8)
    SERIAL=0

    .PHONY: usage
    .SUFFIXES: .key .csr .crt .pem
    .PRECIOUS: %.key %.csr %.crt %.pem

    usage:
    ??? @echo "This makefile allows you to create:"
    ??? @echo "? o public/private key pairs"
    ??? @echo "? o SSL certificate signing requests (CSRs)"
    ??? @echo "? o self-signed SSL test certificates"
    ??? @echo
    ??? @echo "To create a key pair, run \"make SOMETHING.key\"."
    ??? @echo "To create a CSR, run \"make SOMETHING.csr\"."
    ??? @echo "To create a test certificate, run \"make SOMETHING.crt\"."
    ??? @echo "To create a key and a test certificate in one file, run \"make SOMETHING.pem\"."
    ??? @echo
    ??? @echo "To create a key for use with Apache, run \"make genkey\"."
    ??? @echo "To create a CSR for use with Apache, run \"make certreq\"."
    ??? @echo "To create a test certificate for use with Apache, run \"make testcert\"."
    ??? @echo
    ??? @echo "To create a test certificate with serial number other than zero, add SERIAL=num"
    ??? @echo
    ??? @echo Examples:
    ??? @echo "? make server.key"
    ??? @echo "? make server.csr"
    ??? @echo "? make server.crt"
    ??? @echo "? make stunnel.pem"
    ??? @echo "? make genkey"
    ??? @echo "? make certreq"
    ??? @echo "? make testcert"
    ??? @echo "? make server.crt SERIAL=1"
    ??? @echo "? make stunnel.pem SERIAL=2"
    ??? @echo "? make testcert SERIAL=3"

    %.pem:
    ??? umask 77 ; \
    ??? PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
    ??? PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
    ??? /usr/bin/openssl req $(UTF8) -newkey rsa:1024 -keyout $$PEM1 -nodes -x509 -days 365 -out $$PEM2 -set_serial $(SERIAL) ; \
    ??? cat $$PEM1 >? $@ ; \
    ??? echo ""??? >> $@ ; \
    ??? cat $$PEM2 >> $@ ; \
    ??? $(RM) $$PEM1 $$PEM2

    %.key:
    ??? umask 77 ; \
    ??? /usr/bin/openssl genrsa -des3 1024 > $@

    %.csr: %.key
    ??? umask 77 ; \
    ??? /usr/bin/openssl req $(UTF8) -new -key $^ -out $@

    %.crt: %.key
    ??? umask 77 ; \
    ??? /usr/bin/openssl req $(UTF8) -new -key $^ -x509 -days 365 -out $@ -set_serial $(SERIAL)

    TLSROOT=/etc/pki/tls
    KEY=$(TLSROOT)/private/localhost.key
    CSR=$(TLSROOT)/certs/localhost.csr
    CRT=$(TLSROOT)/certs/localhost.crt

    genkey: $(KEY)
    certreq: $(CSR)
    testcert: $(CRT)

    $(CSR): $(KEY)
    ??? umask 77 ; \
    ??? /usr/bin/openssl req $(UTF8) -new -key $(KEY) -out $(CSR)

    $(CRT): $(KEY)
    ??? umask 77 ; \
    ??? /usr/bin/openssl req $(UTF8) -new -key $(KEY) -x509 -days 365 -out $(CRT) -set_serial $(SERIAL)

    轉載于:https://blog.51cto.com/linuxbpm/364551

    總結

    以上是生活随笔為你收集整理的OpenSSL加密与证书的全部內容,希望文章能夠幫你解決所遇到的問題。

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