OpenSSL在Ubuntu中的常用使用技巧
在Ubuntu中使用OpenSSL前,需先确认系统是否已安装。若未安装,可通过以下命令快速安装:
sudo apt update && sudo apt install openssl libssl-dev
安装完成后,通过openssl version命令验证安装是否成功(显示版本号即表示安装完成)。
对称加密使用同一密钥进行加密与解密,适合加密大量数据(如配置文件、日志)。
input.txt,生成encrypted.enc:openssl enc -aes-256-cbc -salt -in input.txt -out encrypted.enc
执行后会提示输入密码(需妥善保管,此密码用于后续解密)。encrypted.enc,恢复为decrypted.txt:openssl enc -d -aes-256-cbc -in encrypted.enc -out decrypted.txt
加密后的文件为二进制格式,若需文本格式可添加-a参数(如openssl enc -aes-256-cbc -a -salt ...)。非对称加密使用公钥加密、私钥解密,适合保护敏感信息(如API密钥、数据库密码)。
private.pem),并提取公钥(public.pem):openssl genrsa -out private.pem 2048 # 生成私钥
openssl rsa -in private.pem -pubout -out public.pem # 提取公钥
plaintext.txt(生成encrypted.enc),用私钥解密(生成decrypted.txt):openssl rsautl -encrypt -inkey public.pem -pubin -in plaintext.txt -out encrypted.enc # 公钥加密
openssl rsautl -decrypt -inkey private.pem -in encrypted.enc -out decrypted.txt # 私钥解密
注意:私钥需严格保密(权限设为600),公钥可公开分享。SSL/TLS证书用于加密网站通信(HTTPS),以下是常见操作:
server.key):openssl genrsa -out server.key 2048
server.csr):openssl req -new -key server.key -out server.csr
执行后会提示输入国家、省份、域名等信息(需如实填写)。server.crt,有效期365天):openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365
ca.key)和自签名根证书(ca.crt,有效期10年):openssl genrsa -out ca.key 2048
openssl req -new -x509 -key ca.key -out ca.crt -days 3650
server.key、server.csr、server.crt),并用CA签名:openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
client.key、client.crt、client.p12),用于双向认证:openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 # 转换为PKCS#12格式(浏览器可用)
openssl x509 -in server.crt -text -noout
或查看CSR的请求信息:openssl req -in server.csr -text -noout
```。
若需加密整个目录,可先压缩再加密:
mydir目录压缩为archive.zip:zip -r archive.zip mydir/
archive.zip.enc:openssl enc -aes-256-cbc -salt -in archive.zip -out archive.zip.enc
archive.zip,再解压到extracted_dir:openssl enc -d -aes-256-cbc -in archive.zip.enc -out archive.zip
unzip archive.zip -d extracted_dir
```。
私钥是加密体系的核心,需采取以下措施保护:
600(仅所有者可读写):chmod 600 private.pem server.key ca.key
-k mypassword),可通过环境变量或密码管理工具传递(如openssl ... -pass env:MY_PASSWORD)。openssl rand -base64 12
file.txt的SHA256哈希值(用于完整性校验):openssl dgst -sha256 file.txt
document.pdf签名(生成signature.bin),验证签名(需私钥):openssl dgst -sha256 -sign private.pem -out signature.bin document.pdf # 签名
openssl dgst -sha256 -verify public.pem -signature signature.bin document.pdf # 验证
```。