首頁  >  文章  >  運維  >  linux openssl是什麼

linux openssl是什麼

青灯夜游
青灯夜游原創
2023-04-18 11:06:433378瀏覽

在linux中,openssl是一個功能極為強大的命令列工具,可以用來完成公鑰體系及HTTPS相關的許多任務。 openssl有兩種運作模式:互動模式和批次模式;直接輸入openssl回車進入互動模式,輸入帶有指令選項的openssl進入批次模式。

linux openssl是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

一、openssl命令簡介

  openssl是一個功能極為強大的命令列工具,可以用來完成公鑰體系(Public Key Infrastructure)及HTTPS相關的許多任務。 openssl是一個強大的安全通訊端層密碼庫,囊括主要的密碼演算法、常用的金鑰和憑證封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。
  openssl有兩種運作模式:互動模式和批次模式。直接輸入openssl回車進入互動模式,輸入帶有指令選項的openssl進入批次模式。
  openssl整個軟體包大概可以分成三個主要的功能部分:密碼演算法庫、SSL協定庫以及應用程式。 openssl的目錄結構自然也是圍繞這三個功能部分進行規劃的。 openssl指令的作用:

  • 私鑰、公鑰和參數的建立和管理
  • #公開金鑰加密作業
  • 建立X.509憑證、CSR和CRL
  • 資訊摘要的計算
  • 使用密碼進行加密和解密
  • SSL/TLS客戶端和伺服器測試
  • 處理S/MIME簽章或加密郵件
  • 時間戳請求、產生與驗證

#二、使用範例

1、互動模式下取得指令幫助

OpenSSL> help
 Standard commands
 asn1parse ca ciphers cms
 crl crl2pkcs7 dgst dhparam
 dsa dsaparam ec ecparam
 enc engine errstr gendsa
 genpkey genrsa help list
 nseq ocsp passwd pkcs12
 pkcs7 pkcs8 pkey pkeyparam
 pkeyutl prime rand rehash
 req rsa rsautl s_client
 s_server s_time sess_id smime
 speed spkac srp storeutl
 ts verify version x509
 Message Digest commands (see the `dgst’ command for more details)
 blake2b512 blake2s256 gost md4
 md5 mdc2 rmd160 sha1
 sha224 sha256 sha3-224 sha3-256
 sha3-384 sha3-512 sha384 sha512
 sha512-224 sha512-256 shake128 shake256
 sm3
 Cipher commands (see the `enc’ command for more details)
 aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
 aes-256-cbc aes-256-ecb aria-128-cbc aria-128-cfb
 aria-128-cfb1 aria-128-cfb8 aria-128-ctr aria-128-ecb
 aria-128-ofb aria-192-cbc aria-192-cfb aria-192-cfb1
 aria-192-cfb8 aria-192-ctr aria-192-ecb aria-192-ofb
 aria-256-cbc aria-256-cfb aria-256-cfb1 aria-256-cfb8
 aria-256-ctr aria-256-ecb aria-256-ofb 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 sm4-cbc
 sm4-cfb sm4-ctr sm4-ecb sm4-ofb

#2、檢視指令版本

OpenSSL> version
 OpenSSL 1.1.1h 22 Sep 2020

3、利用openssl指令進行base64編碼和解碼

  • #base64編碼
(base) [root@sun-site certs]# echo “wuhs” |openssl base64
 d3Vocwo=
 (base) [root@sun-site certs]# echo “wuhs” > 1.txt
 (base) [root@sun-site certs]# openssl base64 -in 1.txt
 d3Vocwo=
  • #base64解碼
(base) [root@sun-site certs]# echo “d3Vocwo=” | openssl base64 -d
 wuhs
 (base) [root@sun-site certs]# openssl base64 -d -in 1.base64
 wuhs

4、利用openssl產生隨機密碼

  • #產生12位元的隨機密碼
(base) [root@sun-site certs]# openssl rand -base64 10 |cut -c 1-12
 PGznlV5Og0Us

5、利用openssl指令產生摘要

  • #對字串「wuhs」進行md5摘要計算
  • ##
    (base) [root@sun-site certs]# echo wuhs | openssl md5
     (stdin)= 4cdb1fbd6a34ff27dc8c10913fab3e7e
     (base) [root@sun-site certs]# openssl md5 1.txt
     MD5(1.txt)= 4cdb1fbd6a34ff27dc8c10913fab3e7e
    對字串「wuhs」進行sha1摘要計算
  • (base) [root@sun-site certs]# openssl sha1 1.txt
     SHA1(1.txt)= bd8f0b20de17d623608218d05e8741502cf42302
     (base) [root@sun-site certs]# echo wuhs | openssl sha1
     (stdin)= bd8f0b20de17d623608218d05e8741502cf42302

#6、利用openssl指令進行AES加密解密

    對字串「wuhs」進行aes加密,使用金鑰123,輸出結果以base64編碼格式給出
  • (base) [root@sun-site certs]# openssl aes-128-cbc -in 1.txt -k 123 -base64
     *** WARNING : deprecated key derivation used.
     Using -iter or -pbkdf2 would be better.
     U2FsdGVkX194Z8P5c7C8vmXbA39omlqU/ET8xaehVFk=
    將aes加密檔案資料進行解密,密鑰123
  • (base) [root@sun-site certs]# openssl aes-128-cbc -d -k 123 -base64 -in 2.txt
     *** WARNING : deprecated key derivation used.
     Using -iter or -pbkdf2 would be better.
     wuhs

7、金鑰產生與驗證

    建立加密的私密金鑰
  • (base) [root@sun-site tmp]# openssl genrsa -des3 -out sunsite.key 2048
     Generating RSA private key, 2048 bit long modulus (2 primes)
     …+++++
     …+++++
     e is 65537 (0x010001)
     Enter pass phrase for sunsite.key:
     Verifying - Enter pass phrase for sunsite.key:
     (base) [root@sun-site tmp]# ll
     total 16
     -rw------- 1 root root 1751 Oct 25 14:43 sunsite.key
    驗證私鑰
  • (base) [root@sun-site tmp]# openssl rsa -check -in sunsite.key
     Enter pass phrase for sunsite.key:
     RSA key ok
     writing RSA key
     -----BEGIN RSA PRIVATE KEY-----
     MIIEpAIBAAKCAQEA1jDreCAjX5kpNmnyNayQB/GUvyIRvZZM2WoKAIjne91JupgP
     OKmBdYSWeWsf0h0XU9ubhCHpgCss2hdRKxLN3rJLlFD98TUKpb9S2XkfrT9s3cLN
     PQyCELK60zrs1sE52I4pDj4nTZPZCL9mykzqwNa5rcGuHN/lLnvJxFPJOJwVWbVE
     Bvh+jGioJbi+Ar0rs37/8naGBYz5k4BFn5sCKrhssoMEpDWjMz4yJMpycTlEFITa
     …
    加密私鑰,輸入密碼後私鑰檔案完成加密
  • (base) [root@sun-site tmp]# openssl rsa -des3 -in sunsite.key -out sunsite.key
     writing RSA key
     Enter PEM pass phrase:
     Verifying - Enter PEM pass phrase:
    解密私鑰,輸入密碼後私鑰檔案被解密
  • (base) [root@sun-site tmp]# openssl rsa -in sunsite.key -out sunsite2.key
     Enter pass phrase for sunsite.key:
     writing RSA key

8、產生憑證簽章

    使用指定私鑰檔案生產csr檔案
  • (base) [root@sun-site tmp]# openssl req \
     -key sunsite.key \
     -new -out sunsite.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) [AU]:CN
     State or Province Name (full name) [Some-State]:HuNan
     Locality Name (eg, city) []:changsha
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:sunsite
     Organizational Unit Name (eg, section) []:jsb
     Common Name (e.g. server FQDN or YOUR name) []:wuhs
     Email Address []:524627027@qq.com
     Please enter the following ‘extra’ attributes
     to be sent with your certificate request
     A challenge password []:123456
     An optional company name []:123456
    產生私密金鑰和CSR
  • (base) [root@sun-site tmp]# openssl req \
     -newkey rsa:2048 -nodes -keyout s.key \
     -out s.csr
     Generating a RSA private key
     …+++++
     .+++++
     writing new private key to ‘s.key’
     -----
     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) [AU]:cn
     State or Province Name (full name) [Some-State]:hunan
     Locality Name (eg, city) []:changsha
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:sunsite
     Organizational Unit Name (eg, section) []:jsb
     Common Name (e.g. server FQDN or YOUR name) []:wuhs
     Email Address []:524627027@qq.com
     Please enter the following ‘extra’ attributes
     to be sent with your certificate request
     A challenge password []:123456
     An optional company name []:123456
     (base) [root@sun-site tmp]# ll
     total 28
     -rw-r–r-- 1 root root 1102 Oct 25 15:37 s.csr
     -rw------- 1 root root 1708 Oct 25 15:37 s.key
    使用已有的憑證和私密金鑰產生CSR
  • #
    openssl x509 \
     -in domain.crt \
     -signkey domain.key 
     -x509toreq -out domain.csr
    查看CSR檔案
  • (base) [root@sun-site tmp]# openssl req -text -noout -verify -in sunsite.csr

linux openssl是什麼

#9、製作和檢視SSL證書

    產生自簽名憑證
  • (base) [root@sun-site tmp]# openssl req \
     -newkey rsa:2048 -nodes -keyout sunsite.key \
     -x509 -days 365 -out sunsite.crt
     Generating a RSA private key
     …+++++
     …+++++
     writing new private key to ‘sunsite.key’
     -----
     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) [AU]:cn
     State or Province Name (full name) [Some-State]:hn
     Locality Name (eg, city) []:cs
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:sunsite
     Organizational Unit Name (eg, section) []:jsb
     Common Name (e.g. server FQDN or YOUR name) []:wuhs
     Email Address []:524627027@qq.com
     (base) [root@sun-site tmp]# ll
     -rw-r–r-- 1 root root 1383 Oct 25 16:03 sunsite.crt
     -rw-r–r-- 1 root root 1102 Oct 25 15:05 sunsite.csr
     -rw------- 1 root root 1708 Oct 25 16:03 sunsite.key
    使用已有私鑰產生自簽章憑證
  • (base) [root@sun-site tmp]# openssl req \
     -key sunsite.key -new \
     -x509 -days 365 -out sunsite.crt
     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) [AU]:cn
     State or Province Name (full name) [Some-State]:hn
     Locality Name (eg, city) []:cs
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:sunsite
     Organizational Unit Name (eg, section) []:jsb
     Common Name (e.g. server FQDN or YOUR name) []:wuhs
     Email Address []:wuhs@qq.com
    使用現有的私密金鑰和CSR產生自簽名憑證
  • (base) [root@sun-site tmp]# openssl x509 \
     -signkey sunsite.key \
     -in sunsite.csr \
     -req -days 365 -out sunsite.crt
     Signature ok
     subject=C = CN, ST = HuNan, L = changsha, O = sunsite, OU = jsb, CN = wuhs, emailAddress = 524627027@qq.com
     Getting Private key
    查看憑證
(base) [root@sun-site tmp ]# openssl x509 -text -noout -in sunsite.crt

linux openssl是什麼

    #驗證憑證是否由ca頒發
  • ##
    (base) [root@sun-site tmp]# openssl verify -verbose -CAfile ca.crt sunsite.crt
     Error loading file ca.crt
     #需要ca证书
驗證私鑰、憑證、CSR是否符合
  • (base) [root@sun-site tmp]# openssl x509 -noout -modulus -in sunsite.crt |openssl md5
     (stdin)= e26905e973af69aed4e4d707f882de61
     (base) [root@sun-site tmp]# openssl rsa -noout -modulus -in sunsite.key |openssl md5
     (stdin)= e26905e973af69aed4e4d707f882de61
     (base) [root@sun-site tmp]# openssl req -noout -modulus -in sunsite.csr |openssl md5
     (stdin)= e26905e973af69aed4e4d707f882de61
     #md5校验和一致说明,三者匹配

10、憑證格式轉換

PEM轉DER
  • (base) [root@sun-site tmp]# openssl x509 -in sunsite.crt -outform der -out sunsite.der
DER轉PEM
  • (base) [root@sun-site tmp]# openssl x509 -in sunsite.der -inform der -out sunsite.crt
PEM轉PKCS7
  • (base) [root@sun-site tmp]# openssl crl2pkcs7 -nocrl -certfile sunsite.crt -certfile ca-chain.crt -out sunsite.p7b
PKCS7轉換為PEM
  • #openssl pkcs7 -in domain.p7b -print_certs -out domain.crt
PEM轉換為PKCS12
  • openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx
PKCS12轉換為PEM
  • openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt

#11、證書撤銷

用戶端取得要撤銷憑證的serial(在使用憑證的主機執行)
  • (base) [root@sun-site tmp]# openssl x509 -in sunsite.crt -noout -serial -subject
     serial=2DA086B4B14ECE63535734049A4BCF70290446C9
     subject=C = CN, ST = HuNan, L = changsha, O = sunsite, OU = jsb, CN = wuhs, emailAddress = 524627027@qq.com

12、取得指令幫助

以openssl x509指令為例
  • (base) [root@sun-site tmp] # openssl x509 --help


三、使用语法及命令介绍

1、使用语法

openssl command [ command_opts ] [ command_args ]

2、标准命令

命令 命令介绍
asn1parse 解析ASN.1序列。
ca 证书颁发机构(ca)管理。
ciphers 密码套件描述确定。
cms cms(加密消息语法)实用程序
crl 证书撤销列表(crl)管理。
crl2pkcs7 CRL到PKCS#7的转换。
dgst 消息摘要计算。
dh Diffie-Hellman参数管理。被dhparam淘汰。
dhparam Diffie-Hellman参数的生成和管理。由genpkey和pkeyparam取代
dsa dsa数据管理。
dsaparam DSA参数生成和管理。由genpkey和pkeyparam取代
ec ec(椭圆曲线)密钥处理
ecparam EC参数操作和生成
enc 使用密码进行编码。
engine 引擎(可加载模块)信息和操作。
errstr 错误编号到错误字符串的转换。
gendh Diffie-Hellman参数的生成。被dhparam淘汰。
gendsa 根据参数生成DSA私钥。由genpkey和pkey取代
genpkey 生成私钥或参数。
genrsa 生成RSA私钥。由根普基取代。
nseq 创建或检查netscape证书序列
ocsp 在线证书状态协议实用程序。
passwd 生成哈希密码。
pkcs12 PKCS#12数据管理。
pkcs7 PKCS#7数据管理。
pkey 公钥和私钥管理。
pkeyparam 公钥算法参数管理。
pkeyutl 公钥算法加密操作实用程序。
rand 生成伪随机字节。
req PKCS#10 X.509证书签名请求(CSR)管理。
rsa rsa密钥管理。
rsautl RSA实用程序,用于签名、验证、加密和解密。被pkeyutl取代
s_client 这实现了一个通用的SSL/TLS客户端,它可以与使用SSL/TLS的远程服务器建立透明连接。它仅用于测试目的,只提供基本的接口功能,但在内部主要使用OpenSSL库的所有功能。
s_server
s_time SSL连接计时器。
sess_id SSL会话数据管理。
smime S/MIME邮件处理。
speed 算法速度测量。
spkac spkac打印和生成实用程序
ts 时间戳授权工具(客户端/服务器)
verify X.509证书验证。
version OpenSSL版本信息。
x509 X.509证书数据管理。

3、訊息摘要指令

##RMD-160 Digest#shaSHA Digestsha1SHA-1 Digestsha224SHA-224 Digestsha256SHA-256 Digestsha384SHA-384 Digestsha512#SHA-512 Digest
#指令 指令介紹
md2 MD2 Digest
md5 MD5 Digest
mdc2 MDC2 Digest
#rmd160

4、編碼和密碼指令

#指令指令介紹#base64base64編碼bf bf-cbc bf-cfb bf-ecb bf-ofb河豚密碼cast cast-cbc強制轉換密碼cast5-cbc cast5-cfb cast5-ecb cast5-ofb CAST5 密碼des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des- ofbDES 密碼des3 desx des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb三重DES密碼idea idea-cbc idea-cfb idea-ecb idea-ofbIDEA 密碼#rc2 rc2-cbc rc2 -cfb rc2-ecb rc2-ofbRC2 密碼#rc4RC4 密碼rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb

RC5 密碼

###相關推薦:《###Linux影片教學###》# #####

以上是linux openssl是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn