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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenSSL以及私有CA的搭建

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenSSL以及私有CA的搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 首先我們肯定會問什么是OpneSSL,以及OpenSSL有什么用?當讓這不僅是剛接觸Linux的我想知道,相信大多數人和我一樣也非常想知道,因為OpenSSL是linux上基礎的服務之一,了解它的應用可以幫助我們更好的了解linux。那么我們先了解下什么是OpenSSL已經它有什么用。

一、OpenSSL及其應用

??????? 首先我們要了解SSL是什么?SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成為Internet上保密通訊的工業標準。

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的秘鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。OpenSSL還可在局域網內構建私有CA,實現局域網內的 證書認證和授權,保證數據傳輸的安全性。如何構建私有CA呢?后面將詳細講述基于OpenSSL實現私有CA構建。

二、了解常用的加密方式

加密方式有對稱加密 非對稱加密 單向加密

???? 1、 對稱加密:

加密和加密都用同一個對稱密鑰,但是,這種加密方法存在一定問題,就是密鑰傳輸時,容易被盜竊。還有密鑰管理困難,對稱加密的方法:DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5。

??? 2、? 非對稱加密:
公鑰和私鑰都可以進行加密,解密是公鑰和私鑰對應解密的,就好像一把鎖對應多把相同的鑰匙一樣,公鑰可以公開的,非對稱加密解決了密鑰傳輸時帶來的問題,同時還解決了密鑰管理的繁雜的問題。但是如果你用非對稱加密的方式來加密一段數據,速度會非常慢,比對稱加密的速度慢幾個數量級。非對稱加密的方法:RSA DSA

???? 3、單向加密:

單向加密是用來提取數據的特征碼,為了保證數據傳輸時的完整性,哪怕數據發生一點的變化,特征碼都會引起巨大的改變,單向加密的方法:MD5 SHA


三、數據的安全傳輸方式

??????? 如上面已經提到了三種加密方式,和一些加密算法。那么在數據的傳輸過程中如何才能保證數據傳輸的安全性呢?
對于發送段和接收端,如下闡述

??????? 1、發送端:

(1)、使用單向加密算法提取生成數據的特征碼

(2)、使用自己的私鑰加密特征碼附加在數據后面

(3)、生成用于對稱加密的臨時密鑰

(4)、用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼

(5)、使用接收方的公鑰加密此臨時密鑰,附加在對稱加密后的數據后方

2、接收端:

(1)、使用自己的私鑰解密加密的臨時密鑰;從而獲得對稱密鑰

(2)、使用對稱密鑰解密對稱加密的數據和私鑰加密的特征碼密文;從而獲得數據和特征碼密文

(3)、使用發送方的公鑰解密特征碼密文,從而獲得從計算生成的特征碼

(4)、使用與對方同樣的單向加密算法計算數據的特征碼,并與解密而來的進行比較

注:圖片出自? http://www.178linux.com/2704

闡述中提到的公鑰,用來加密;私鑰用來解密。公鑰與私鑰的作用的作用是:用公鑰加密的內容只能用私鑰解密,用私鑰加密的內容只能用公鑰解密

四、與CA證書創建的一些內容


? 如上所述,在數據的傳輸過程中存在很多不安全因素,因此對數據加密傳輸成了現在互聯網上一個常用手段,那么如何多數據進行加密傳輸呢,我們這邊就來介紹一種關于數據加密的協議,即CA證書。也許我們這邊說的不是太準確,我個人的理解CA就是用于加密通信的一種實現方式。那么我們如何去創建一個CA呢,當然我這里所的創建是針對本機來說的,而對于互聯網上的CA證書都是有權威機構頒發的。私人是沒有權限頒發CA證書的。如果我們要創建私有CA的話,需要了解以下幾個內容:

1、PKI:公鑰基礎設施(Public Key Infrastructure)

??????? 包含以下組成部分:

簽證機構:CA

??????? 注冊機構:RA

證書吊銷列表:CRL

?????? 證書存取庫

2、X.509證書的格式:定義了證書的結構以及認證協議標準

版本號

序列號

簽名算法ID

發行者名稱

有效期限

主體名稱

主體公鑰

發行者惟一標識

主體的惟一標識

擴展

發行者簽名

3、SSL:安全的套接字層(Secure Socket Layer)

??????? SSL的版本:

1995:SSL 2.0, Netscape

1996: SSL 3.0

1999: TLS 1.0 :改名為TLS

2006: TLS 1.1 RFC 4346

2008:TLS 1.2 :現在常用的是這個版本

2015: TLS 1.3 :這個是現在比較新的版本,還沒有普及

??? SSL和TCP/IP協議一樣也使用了分層設計的結構,下面介紹下它的分層結構

??????? (1)、最低層:基礎算法原語的實現,aes, rsa, md5

??????? (2)、向上一層:各種算法的實現

??????? (3)、再向上一層:組合算法實現的半成品

??????? (4)、用各種組件拼裝而成的種種成品密碼學協議/軟件,如:tls, ssh,

? 4、OpenSSL:程序包是開源項目

??????? 有三個組件組成:

openssl: 多用途的命令行工具;

libcrypto: 公共加密庫;

libssl: 庫,實現了ssl及tls;

??????? (1)openssl命令詳解

??????? 查看當前openssl的版本

[root@localhost ~]# openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013

??????? (2)對稱加密實現:加密和解密使用同一個秘鑰,如:

[root@localhost tmp]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext

#對tmp下fstab這個文件進行des3加密方式加密輸出為fstab.ciphertext

enter des-ede3-cbc encryption password:??????? #輸入密碼

Verifying - enter des-ede3-cbc encryption password:?????? #再次輸入密碼

[root@localhost tmp]# tail -3 fstab.ciphertext ??????? #查看fstab.ciphertext文件,這里就會顯示編碼的形式

YudNqbvUskrHCcXg6BJqUOQXG0cfxUpz77jQpwKD5F/ASUtOs+zBkKvctWe+bOTs

Az1oGEeUn5gwHp4PBvSQbZJpY+BurIr+pcwXO1lt4M2odWmV7wG1RQDHanukOUAj

EJ2S4jyoOhHO1yzlpqKjypTsGQB3IMs+969n6w4iAio=

[root@localhost tmp]# rm -rf fstab??????? #刪除原文件

[root@localhost tmp]# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab

#把fstab.ciphertext解密輸出為fstab文件

enter des-ede3-cbc decryption password:??????? #輸入密碼

[root@localhost tmp]# tail -3 fstab??????? #查看解密后的文件

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

[root@localhost tmp]#

注:其中的加密算法可以根據自己的需要更改???

??? (3)單項加密

dgst命令:

用法:openssl dgst -md5 /PATH/TO/SOMEFILE ,如

[root@localhost tmp]# openssl dgst -md5 fstab

MD5(fstab)= e83bea7d589639c435390c19b372e89e

????? (4) 生成用戶密碼,passwd命令,如

[root@localhost tmp]# openssl passwd -1 -salt 12345 deanzhu

$1$12345$I3fdyYvZmTklIOQyuo5HG1

????? (5)生成隨機數,

openssl rand -base64|-hex NUM

NUM: 表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2; 如

[root@localhost tmp]# openssl rand -base64 16

ZHTO2YRBGxfKnXqeAcpVtg==

[root@localhost tmp]# openssl rand -base64 24

tZGXdlyo9zRCiLhnPv9YDdrFnd01SYX4

??????? (6)生成秘鑰對

?????? 用法:openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

提取出公鑰:

用法:openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout

[root@localhost tmp]# openssl genrsa -out rsakey.privte 2048 #生成2048位的私鑰

Generating RSA private key, 2048 bit long modulus

............+++

.......+++

e is 65537 (0x10001)

[root@localhost tmp]# cat rsakey.privte #查看私鑰

-----BEGIN RSA PRIVATE KEY-----

MIIEpQIBAAKCAQEAzOE5ObkTYyZeYBJHbNm6qFADp+96Vg2VGHZTWtUO609j+36f

dTBHtIxG9HlRnADVJhDCgGKmBMta3zuHVe4gsVTuCHSFuNETxrV/Z1bZg9EH/vB8

bJ7ML9Jpw+8og0hzix8Vxgd52Bp2KXq02qq2TkJzHeJMoxQF6EAJPrtCsi6fJ6JN

9kDFnu8OKJHj9yBZgLt7lKe+zwcA+hV5Dt6Ca4z1h9ckrBdI4pF6gv6Jk2Yu3Y2W

JZRhXzmRPWIofO3CghDYVLrmqraWvsQb3SYm13IWnfYGAr14eV8W/ONS5BxuNoHA

ZdM+i0fAvf55loKvMPkjD2gkLTy3UY79BIh5BwIDAQABAoIBAAH8/Y0t2p5PtQLB

qqfHxSP1AtQSYuGK6DOAknaDMs3dy16Zb/q3KTr7UYT12HDnISppZznPu0S4pH0e

GsYetXqDFHxIhTOx87st77qVAS9iS+2Rb+Ot9tVP+W7JV19OyLBE8PUnBWuvdg4Y

/sBQf8xqoKtdktjSTOxgErblIlSQUs1nBWfnRf5rXEEvd97/30EUUhFMVF23HEA5

xjgdXnCQdGZjpVxN57OTMKQ/Rj+8StXJYsvunGfYMIoR99ziHyrJF8hgX/mwiHEw

XeUYXxLPUFWcSKDUwO1hYlTap5NB0DNW/zDtj6VF5MtHYUI0fIDuZNgA7/BKirrb

ydnbCIECgYEA+FuLnkxR0deT3w7t1e7ATflJREmTdhcOM0BeBMFi5aoVvjDqOqbD

91kWqy34jina+44weg2N4youXsCQtjxc3bTmVXg1lsUIWsSTU8XMhhAvRkit1Hr8

HPuEB6QTiuu4ZSNydAUyKaaOZp8OvOTB/cjArYJZHm1nXWcZ+6LNFtECgYEA0y8t

tO1IWiQx2yg+MhIjkMgFEzhnVmLZa8dkW2QwhW/MKVB3evJM4DyklZiuCLD5QpLl

uvWlwNdrpYCjliLJOcUC1f5ExJnNk9ZxjYpcx7/cHT5+CNR7aru3wSm5EUOBPCHf

lnh6NZBhk5xzi8EmpZDqdjItowqCBaD9kzxYOFcCgYEAoteLjSingTqjp17njR01

lCq+4nqHqKdnVS2AOAgA62uBRCpYekp8NYOBfI3w6m4BOm251V1ryiYPL2t9ty+P

CIOjfykJoijg2HsJyqTn/INCLAhdifN1uR8lK8lmUvFJ/26ljfMWN/8QYbMq+6nW

lKt7woi0HGJJoxGGFNtjM/ECgYEAzA2eAF/1tQOcGMJ9tivIqbBbFwM89j91DasP

0S6xo30urAzQJb/RgCmYbeOk5Uj6z9TYnRmWGwsLPFNbvUnHXUZ7QwH4uG5UMTDX

b4fttiQwLyGe7jFBPxQ6rS3/YCr1yICCZgXrL65eWh6llrf++6NWqPY7Gnqgv4ea

/JUmOOkCgYEAngIzNp8EBLdNFvnca59GMT4CmVF8Wk/hZGAPBCEeGHnpqBiSfytg

aTwdkwRy1FfCSbqju3tzMkdB57nwKaT0er8uHN9L/5hIgjcaQyHtNlYYKxqsh9gH

Nf1IKJLUIX4JtnDBfWQay4WJO0l9U+WLGlX3WFoZebnhAgJO3LBchfo=

-----END RSA PRIVATE KEY-----

[root@localhost tmp]# openssl rsa -in rsakey.privte -pubout #從私鑰中提取公鑰

writing RSA key

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzOE5ObkTYyZeYBJHbNm6

qFADp+96Vg2VGHZTWtUO609j+36fdTBHtIxG9HlRnADVJhDCgGKmBMta3zuHVe4g

sVTuCHSFuNETxrV/Z1bZg9EH/vB8bJ7ML9Jpw+8og0hzix8Vxgd52Bp2KXq02qq2

TkJzHeJMoxQF6EAJPrtCsi6fJ6JN9kDFnu8OKJHj9yBZgLt7lKe+zwcA+hV5Dt6C

a4z1h9ckrBdI4pF6gv6Jk2Yu3Y2WJZRhXzmRPWIofO3CghDYVLrmqraWvsQb3SYm

13IWnfYGAr14eV8W/ONS5BxuNoHAZdM+i0fAvf55loKvMPkjD2gkLTy3UY79BIh5

BwIDAQAB

-----END PUBLIC KEY-----

五、私有CA的搭建

如果要創建CA我們就必須先了解下和CA相關的工作流程,如下圖





注:圖片出自 http://www.178linux.com/2704

??????? 1、服務器端建立CA

[root@localhost CA]# (umask 077;openssl genrsa -out /etc/pki/CA/private/ca 2048 -des3) #生成秘鑰

Generating RSA private key, 2048 bit long modulus

....................................+++

...............................................+++

e is 65537 (0x10001)

[root@localhost CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

#自簽證書

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----???????????????????????????????

Country Name (2 letter code) [XX]:beijing

string is too long, it needs to be less than 2 bytes long

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:beijing

Locality Name (eg, city) [Default City]:beijing

Organization Name (eg, company) [Default Company Ltd]:mageedu

Organizational Unit Name (eg, section) []:www.mageedu

Common Name (eg, your name or your server's hostname) []:www.mageedu.com

Email Address []:admin@mageedu.com

[root@localhost CA]# ls

cacert.pem certs crl newcerts private

[root@localhost CA]# touch index.txt #初始化工作環境

[root@localhost CA]# echo 01 > serial

??????? 2、客戶端申請證書

[root@localhost CA]# (umask 077; openssl genrsa -out /etc/rsa/my.key 2048 -des3)

#客戶端生成秘鑰對

Generating RSA private key, 2048 bit long modulus

.......................+++

......................................+++

e is 65537 (0x10001)

[root@localhost CA]# openssl req -new -key /etc/rsa/my.key -out /etc/rsa/my.csr

#生成證書請求

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:beijing

Locality Name (eg, city) [Default City]:beijing

Organization Name (eg, company) [Default Company Ltd]:mageedu

Organizational Unit Name (eg, section) []:www.mageedu

Common Name (eg, your name or your server's hostname) []:www.mageedu.com

Email Address []:admin@mageedu.com

?

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

??????? 3、把簽署請求文件發送給CA服務器

??????? 可以使用命令 scp

??????? 用法:PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE

? PUSH: scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE

??????? 4、服務器簽署證書

[root@localhost CA]# openssl ca -in /etc/pki/CA/my.csr -out /etc/pki/CA/my.crt -days 365

#簽署證書,有效期為365天

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Sep 6 10:57:27 2015 GMT

Not After : Sep 5 10:57:27 2016 GMT

Subject:

countryName = CN

stateOrProvinceName = beijing

organizationName = mageedu

organizationalUnitName = www.mageedu

commonName = www.mageedu.com

emailAddress = admin@mageedu.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

1F:60:5C:7F:76:1E:DC:0D:78:C6:EA:FC:DE:2D:A5:DC:74:69:2E:4B

X509v3 Authority Key Identifier:

keyid:B3:61:4C:47:88:80:44:F2:C7:4C:D6:F2:9D:33:E2:3C:FC:4D:28:1E

?

Certificate is to be certified until Sep 5 10:57:27 2016 GMT (365 days)

Sign the certificate? [y/n]:y

?

?

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

[root@localhost CA]# cat index.txt

#查看index文件,存放證書subject信息,其中V表示可用證書

V 160905105727Z 01 unknown /C=CN/ST=beijing/O=mageedu/OU=www.mageedu/CN=www.mageedu.com/emailAddress=admin@mageedu.com

??????? 5、發送給請求者

[root@localhost mysql]# scp /etc/pki/CA/my.crt 192.168.0.13:/tmp

#將證書發送的客戶端機器的tmp目錄下

The authenticity of host '192.168.0.13 (192.168.0.13)' can't be established.

RSA key fingerprint is ef:3d:22:74:19:4f:5f:70:29:b9:a0:de:0b:db:41:ba.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.0.13' (RSA) to the list of known hosts.

Address 192.168.0.13 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

root@192.168.0.13's password:

my.crt 100% 4659 4.6KB/s 00:00

?

6、吊銷證書

[root@localhost CA]# openssl x509 -in my.crt -noout -serial -subject

#獲取證書節點

serial=01

subject= /C=CN/ST=beijing/O=mageedu/OU=www.mageedu/CN=www.mageedu.com/emailAddress=admin@mageedu.com

[root@localhost CA]# cat index.txt

#CA根據節點提交的serial和subject來驗證index.txt文件中信息是否一致

V 160905105727Z 01 unknown /C=CN/ST=beijing/O=mageedu/OU=www.mageedu/CN=www.mageedu.com/emailAddress=admin@mageedu.com

[root@localhost CA]# openssl ca -revoke newcerts/01.pem #吊銷證書

Using configuration from /etc/pki/tls/openssl.cnf

Revoking Certificate 01.

Data Base Updated

[root@localhost CA]# echo 00 > crlnumber #生成吊銷證書的編號

[root@localhost CA]# openssl ca -gencrl -out thisca.crl #更新證書吊銷列表

Using configuration from /etc/pki/tls/openssl.cnf

六、總結

關于openssl其中有很多內容還沒有講到,以上的內容只是個人學習的總結,可能有些部分說的不正確,還請指出。謝謝!






轉載于:https://blog.51cto.com/deanzhulinux/1699306

總結

以上是生活随笔為你收集整理的OpenSSL以及私有CA的搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

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