Linux centos 5.4 及 GnuPG加密文件
Linux centos 5.4 及 OpenSSL加密文件
GnuPG软件包(Gnu Privacy Guard,Gnu隐私保镖),软件包的名称是gpg。1.创建密钥对创建一个用来发送加密数据和进行解密数据的密钥。执行gpg命令,会在主目录下创建一个.gnupg子目录。在该子目录里面有一个gpg.conf的配置文件,它里面是gpg工具的各种选项及其默认设置值。执行gpg --gen-key命令,生成密钥,如图3-99所示:在图3-99中,确认选择无误后,在最后一行输入“y”,回车。在图3-100中,根据提示输入相关信息。
现在已经在.gnupg目录中生成了一对密钥且存在于文件中,进入.gnupg目录进行查看,如图3-101所示。2.提取公共密钥为了使对方使用刚才生成的公共密钥,需要用命令将公共密钥提取出来,发给对方。执行命令gpg --export 3FAF8118 > pub.key,将公共密钥提取到文件pub.key中。
3.对方收到公共密钥收到别人的公共密钥后,执行命令gpg --import pub.key把这个公共密钥放到自己的pubring.gpg文件(钥匙环文件)里。如果要删除对方公钥,执行命令gpg --delete-secret-and-public-key3FAF8118。命令的执行如图3-102所示。
4.对方用公共密钥加密文件对方执行gpg -ea -r 3FAF8118 gpg_temp.txt对gpg_temp.txt文件进行加密。-e:代表加密。-a:代表ASCII格式。-r:后面是公共密钥标识。3FAF8118:为密钥标识。该命令执行后,在当前目录下生成了一个同名的gpg_temp.txt.asc的文件,即加密后的文件。具体执行过程如图3-104所示。
5.我方对加密文件进行解密我方收到gpg_temp.txt.asc文件后,执行gpg -ogpg_temp2.txt -d gpg_temp.txt.asc命令,用私有密钥对加密文件进行解密。-o:输出文件。-d:表示解密。在当前目录下生成了解密后的文件tgpg_temp.txt。具体执行过程如图3-105所示
2 用OpenSSL加密文件OpenSSL可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。网址为:http://www.openssl.org/。SSL是Secure Sockets Layer的缩写,是支持在Internet上进行安全通信的标准,并且将数据密码技术集成到协议中。数据在离开计算机之前被加密,然后只有到达它预定的目标后才被解密。1.安装openssl-0.9.8n[root@localhostDesktop]# tar -xzvf openssl-0.9.8n.tar.gz[root@localhostDesktop]# cd openssl-0.9.8n[root@localhostopenssl-0.9.8n]# ./config--prefix=/root/openssl[root@localhostopenssl-0.9.8n]# make[root@localhostopenssl-0.9.8n]# make install2.产生CA证书修改~/openssl/ssl/openssl.cnf文件中的一行(约42行)为:dir=/root/openssl/ssl/misc/demoCA,将产生的CA证书放置在/root/openssl/ssl/misc/demoCA下。[root@localhostopenssl-0.9.8n]# cd /root/openssl/ssl/misc/[root@localhostmisc]# cp ../openssl.cnf /etc/pki/tls/openssl.cnf[root@localhostmisc]# dirCA.pl CA.sh c_hash c_info c_issuer c_name执行CA证书产生脚本CA.sh,如下所示:[root@localhostmisc]# ./CA.sh -newcaCA certificate filename (or enter to create) Making CA certificate ...Generating a 1024 bit RSA private key......................++++++..................................++++++writing new private key to'./demoCA/private/./cakey.pem'Enter PEM pass phrase:Verifying - Enter PEM pass phrase:-----You are about to be asked to enterinformation that will be incorporatedinto your certificate request.What you are about to enter is what iscalled a Distinguished Name or a DN.There are quite a few fields but you canleave some blankFor some fields there will be a defaultvalue,If you enter '.', the field will be leftblank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name)[Some-State]:HNLocality Name (eg, city) []:XXOrganization Name (eg, company) [InternetWidgits Pty Ltd]:XXUOrganizational Unit Name (eg, section) []:JSJCommon Name (eg, YOUR name) []:ZTGEmail Address []:jsjoscpu@163.com Please enter the following 'extra'attributesto be sent with your certificate requestA challenge password []:123456An optional company name []:COMPUTERUsing configuration from/etc/pki/tls/openssl.cnfEnter pass phrase for./demoCA/private/./cakey.pem:Check that the request matches the signatureSignature okCertificate Details: Serial Number: f2:01:3d:54:f6:16:bd:a9 Validity Not Before: Jun 3 04:15:28 2010GMT Not After : Jun 2 04:15:28 2013GMT Subject: countryName = CN stateOrProvinceName = HN organizationName = XXU organizationalUnitName = JSJ commonName = ZTG emailAddress =jsjoscpu@163.com X509v3 extensions: X509v3 Subject Key Identifier: B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2 X509v3 Authority KeyIdentifier: keyid:B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2 DirName:/C=CN/ST=HN/O=XXU/OU=JSJ/CN=ZTG/emailAddress=jsjoscpu@163.com serial:F2:01:3D:54:F6:16:BD:A9 X509v3 Basic Constraints: CA:TRUECertificate is to be certified untilJun 2 04:15:28 2013 GMT (1095 days) Write out database with 1 new entriesData Base Updated[root@localhost misc]# [root@localhostmisc]# dir demoCA/cacert.pem careq.pem certs crl index.txt index.txt.attr index.txt.old newcerts private serialcacert.pem就是CA证书,CA私钥存放在private目录。
3.以CA产生次级证书在CA证书产生之后,就可以所需要的次级证书,次级证书可应用于数字签名或https等ssl传输加密。(1)产生使用者的密钥文件及CSR文件(CertificateSigning Request)。执行如下命令:[root@localhost misc]# ~/openssl/bin/openssl req-nodes -new -keyoutprivate_key.pem -outprivate_req.pem -days 3650 -config ~/openssl/ssl/openssl.cnf如图3-106所示,根据提示输入相关信息。(2)产生使用者之证书。执行如下命令:[root@localhostmisc]# ~/openssl/bin/opensslca -config ~/openssl/ssl/openssl.cnf -policy policy_anything -out public_key.pem -infiles private_req.pem如图3-107所示,根据提示输入相关信息。
(3)文件加密。public_key.pem为公开密钥,如果某人要加密传送一文件,则可以用公钥public_key.pem加密文件。假如某人要传送的文件是openssl_test.txt,加密后文件名为openssl_test.enc。执行如下命令即可:[root@localhostmisc]# ~/openssl/bin/opensslsmime -encrypt -in openssl_test.txt -out openssl_test.encpublic_key.pem文件openssl_test.txt的内容为:openssl_test shi yan!!!。(4)文件解密。收到对方发过来的加密文件openssl_test.enc后,执行如下命令直接查看其内容,如图3-108所示。
[root@localhostmisc]# less openssl_test.enc如图3-108所示为密文,不知其意。因此需要解密,执行如下命令,用私钥private_key.pem对openssl_test.enc文件解密:[root@localhostmisc]# ~/openssl/bin/opensslsmime -decrypt -in openssl_test.enc -recip public_key.pem -inkey private_key.pem解密出来的明文如图3-109所示