linux 命令openssl、gpg

openssl

-in <file>     	input file
-out <file>    	output file
-pass <arg>    	pass phrase source
-e             	encrypt
-d             	decrypt
-a/-base64     	base64 encode/decode, depending on encryption flag
-k             	passphrase is the next argument
-kfile         	passphrase is the first line of the file argument
#对称加密
openssl enc -aes-128-cbc -e -a -in index.php  -out enc.php						#提示输入密码
openssl enc -aes-128-cbc -e -a -in index.php  -out enc.php -k pldsec			#直接加密
openssl enc -aes-128-cbc -d -a -in enc.php -k pldsec								#解密到屏幕



#生成密钥对
# -des,-des3,-idea,-aes128,-aes192,-aes256指定私钥口令保护算法,如果不指定,私钥将被明文存放
openssl genrsa -out openssl.key 2048

提取PEM格式公钥
openssl rsa -in openssl.key -pubout -out pubkey.pem

#提取PEM RSAPublicKey格式公钥
openssl rsa -in openssl.key -RSAPublicKey_out -out pubkey.pem

#查看key结构
openssl rsa -text -in fd.key

#修改秘钥的passphase
openssl rsa -des3 -in ssh.key -out ssh.key.new

#公钥加密,私钥解密
#公钥加密
openssl rsautl -encrypt -in plain.txt -inkey fd.key -out enc.txt
#私钥解密
openssl rsautl -decrypt -in enc.txt -inkey fd.key -out replain.txt

#公钥加密
openssl rsautl -encrypt -in plain.txt -inkey fd-public.key -pubin -out enc1.txt
#私钥解密
openssl rsautl -decrypt -in enc1.txt -inkey fd.key -out replain1.txt


#私钥加密(签名),公钥解密(验证签名)
#私钥加密(签名)
openssl rsautl -sign -in plain.txt -inkey fd.key -out sign.txt
#公钥解密(验证签名)
openssl rsautl -verify -in sign.txt -inkey fd.key -out replain.txt

#私钥加密(签名)
openssl rsautl -sign -in plain.txt -inkey fd.key  -out sign1.txt
#公钥解密(验证签名)
openssl rsautl -verify -in sign1.txt -inkey fd-public.key -pubin -out replain1.txt

#base64
openssl base64 -in sign.txt -out sign-base64.txt
openssl base64 -in sign-base64.txt -d -out sign1.txt




证书-Bulletproof SSL and TLS
#生成签名申请
openssl req -new -key fd.key -out fd.csr

#查看
openssl req -text -in fd.csr -noout

#从已有证书生成
openssl x509 -x509toreq -in fd.crt -out fd.csr -signkey fd.key

#读取配置文件生成
openssl req -new -config fd.cnf -key fd.key -out fd.csr

#自签名
openssl x509 -req -days 365 -in fd.csr -signkey fd.key -out fd.crt

#一次性生成自签名
openssl req -new -x509 -days 365 -key fd.key -out fd.crt

#一次性生成签名证书不提示
openssl req -new -x509 -days 365 -key fd.key -out fd.crt -subj "/C=GB/L=London/O=Feisty Duck Ltd/CN=mg.ketao.com"

#多域名,在fd.ext里输入
subjectAltName = DNS:*.feistyduck.com, DNS:feistyduck.com
openssl x509 -req -days 365 -in fd.csr -signkey fd.key -out fd.crt -extfile fd.ext

#查看证书
openssl x509 -text -in fd.crt -noout

#证书转换
openssl x509 -inform PEM -in fd.pem -outform DER -out fd.der
openssl x509 -inform DER -in fd.der -outform PEM -out fd.pem



pkcs#12
#生成
openssl pkcs12 -export -name "My Certificate" -out fd.p12 -inkey fd.key -in fd.crt -certfile fd-chain.crt

#提取全部
openssl pkcs12 -in fd.p12 -out fd.pem -nodes


#分开提取
openssl pkcs12 -in fd.p12 -nocerts -out fd.key -nodes
openssl pkcs12 -in fd.p12 -nokeys -clcerts -out fd.crt
openssl pkcs12 -in fd.p12 -nokeys -cacerts -out fd-chain.crt


摘要算法/完整性校验(digest algorithm/integrity validation)
md5/sha/sha1/sha256/sha384

key exchange
DH/ECDH/EDH/EECDH/KECDH/KEDH/KEECDH/SRSA/RSA

Cipher keywords
3DES/AES/AESGCM/CAMELLIA/DES/IDEA/SEED

openssl s_client -connect www.feistyduck.com:443


gpg

--list-keys/-k			列出公钥
--gen-key
-o			输出到文件
-a			ascii格式
-e/--encrypt
-d/--decrypt
-s/--sign
-r/--recipient

-s/--sign		签名
--detach-sig		分离签名
--clearsign		组合签名

--batch			no ask
--yes			自动y

-c/--symmetric
--verify

--passphrase		私钥密码
#rngd -f -r /dev/urandom 生成随机entropy
#yum install rng-tools

#导出公钥uid=dailei
gpg -o /tmp/dailei.gpg -a --export dailei

#导出私钥
gpg -o /tmp/dailei-secret.gpg -a --export-secret-keys dailei

#导入私钥
gpg --import tmp.key


#公钥加密
gpg -o tmp.zip.enc -e -r dailei tmp.zip

#私钥解密
gpg -o tmp.zip.dec -d -r dailei tmp.zip.enc 


#私钥加密--签名
echo 'pldsec@123' | gpg --batch --yes -o tmp.zip.sign --passphrase-fd 0 --sign tmp.zip

#公钥解密--验签
gpg -o tmp.nosign -d tmp.zip.sign



#普通签名
gpg -o vsftpd.sign -s vsftpd-3.0.2-10.el7.src.rpm
gpg --verify vsftpd.sign

#明文签名
gpg -o vsftpd.sign.clear --clearsign vsftpd-3.0.2-10.el7.src.rpm
gpg --verify vsftpd.sign.clear


#分离签名,加-a变为ascii
gpg -o vsftpd.sign.detach -a --detach-sig vsftpd-3.0.2-10.el7.src.rpm
gpg --verify vsftpd.sign.detach vsftpd-3.0.2-10.el7.src.rpm


上一篇: linux 网络网卡记录 ip
下一篇: 库编译选项生成 pkg-config 以及运行时库查找路径
作者邮箱: 203328517@qq.com