在linux中,openssl是一個功能極為強大的命令列工具,可以用來完成公鑰體系及HTTPS相關的許多任務。 openssl有兩種運作模式:互動模式和批次模式;直接輸入openssl回車進入互動模式,輸入帶有指令選項的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簽章或加密郵件
- 時間戳請求、產生與驗證
#二、使用範例
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
- 產生自簽名憑證
(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
- 查看憑證
- #驗證憑證是否由ca頒發
- ##
(base) [root@sun-site tmp]# openssl verify -verbose -CAfile ca.crt sunsite.crt Error loading file ca.crt #需要ca证书
(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
(base) [root@sun-site tmp]# openssl x509 -in sunsite.der -inform der -out sunsite.crt
(base) [root@sun-site tmp]# openssl crl2pkcs7 -nocrl -certfile sunsite.crt -certfile ca-chain.crt -out sunsite.p7b
#openssl pkcs7 -in domain.p7b -print_certs -out domain.crt
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx
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
- (base) [root@sun-site tmp] # openssl x509 --help
三、使用语法及命令介绍
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证书数据管理。 |
#指令 | 指令介紹 |
---|---|
md2 | MD2 Digest |
md5 | MD5 Digest |
mdc2 | MDC2 Digest |
#rmd160 | ##RMD-160 Digest|
SHA Digest | |
SHA-1 Digest | |
SHA-224 Digest | |
SHA-256 Digest | |
SHA-384 Digest | |
#SHA-512 Digest |
指令介紹 | |
---|---|
base64編碼 | |
河豚密碼 | |
強制轉換密碼 | |
CAST5 密碼 | |
DES 密碼 | |
三重DES密碼 | |
IDEA 密碼 | |
RC2 密碼 | |
RC4 密碼 |
以上是linux openssl是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

維護模式在Linux系統管理中扮演關鍵角色,幫助進行系統修復、升級和配置變更。 1.進入維護模式可以通過GRUB菜單選擇或使用命令“sudosystemctlisolaterescue.target”。 2.在維護模式下,可以執行文件系統修復和系統更新等操作。 3.高級用法包括重置root密碼等任務。 4.常見錯誤如無法進入維護模式或掛載文件系統,可通過檢查GRUB配置和使用fsck命令修復。

使用Linux維護模式的時機和原因:1)系統啟動問題時,2)進行重大系統更新或升級時,3)執行文件系統維護時。維護模式提供安全、控制的環境,確保操作的安全性和效率,減少對用戶的影響,並增強系統的安全性。

Linux中不可或缺的命令包括:1.ls:列出目錄內容;2.cd:改變工作目錄;3.mkdir:創建新目錄;4.rm:刪除文件或目錄;5.cp:複製文件或目錄;6.mv:移動或重命名文件或目錄。這些命令通過與內核交互執行操作,幫助用戶高效管理文件和系統。

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux的核心組件包括內核、文件系統、Shell、用戶空間與內核空間、設備驅動程序以及性能優化和最佳實踐。 1)內核是系統的核心,管理硬件、內存和進程。 2)文件系統組織數據,支持多種類型如ext4、Btrfs和XFS。 3)Shell是用戶與系統交互的命令中心,支持腳本編寫。 4)用戶空間與內核空間分離,確保系統穩定性。 5)設備驅動程序連接硬件與操作系統。 6)性能優化包括調整系統配置和遵循最佳實踐。

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

Linux的維護模式可以通過GRUB菜單進入,具體步驟為:1)在GRUB菜單中選擇內核並按'e'編輯,2)在'linux'行末添加'single'或'1',3)按Ctrl X啟動。維護模式提供了一個安全環境,適用於系統修復、重置密碼和系統升級等任務。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中