2007年3月20日星期二

GNU 隐私手册

帮助信息


$ gpg --help

gpg (GnuPG) 1.4.7

Copyright (C) 2006 Free Software Foundation, Inc.

This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it

under certain conditions. See the file COPYING for details.


Home: /home/tony/.gnupg。
支持的算法:

公钥:RSA, RSA-E, RSA-S, ELG-E, DSA

对称加密:3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH

散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224

压缩:不压缩, ZIP, ZLIB, BZIP2


语法:gpg [选项] [文件名]

签名、检查、加密或解密

默认的操作依输入数据而定


指令:


-s, --sign [文件名] 生成一份签名

--clearsign [文件名] 生成一份明文签名

-b, --detach-sign 生成一份分离的签名

-e, --encrypt 加密数据

-c, --symmetric 仅使用对称加密

-d, --decrypt 解密数据(默认)

--verify 验证签名

--list-keys 列出密钥

--list-sigs 列出密钥和签名

--check-sigs 列出并检查密钥签名

--fingerprint 列出密钥和指纹

-K, --list-secret-keys 列出私钥

--gen-key 生成一副新的密钥对

--delete-keys 从公钥钥匙环里删除密钥

--delete-secret-keys 从私钥钥匙环里删除密钥

--sign-key 为某把密钥添加签名

--lsign-key 为某把密钥添加本地签名

--edit-key 编辑某把密钥或为其添加签名

--gen-revoke 生成一份吊销证书

--export 导出密钥

--send-keys 把密钥导出到某个公钥服务器上

--recv-keys 从公钥服务器上导入密钥

--search-keys 在公钥服务器上搜寻密钥

--refresh-keys 从公钥服务器更新所有的本地密钥

--import 导入/合并密钥

--card-status 打印卡状态

--card-edit 更改卡上的数据

--change-pin 更改卡的 PIN

--update-trustdb 更新信任度数据库

--print-md 算法 [文件] 使用指定的散列算法打印报文散列值


选项:


-a, --armor 输出经 ASCII 封装

-r, --recipient 某甲 为收件者“某甲”加密

-u, --local-user 使用这个用户标识来签名或解密

-z N 设定压缩等级为 N (0 表示不压缩)

--textmode 使用标准的文本模式

-o, --output 指定输出文件

-v, --verbose 详细模式

-n, --dry-run 不做任何改变

-i, --interactive 覆盖前先询问

--openpgp 行为严格遵循 OpenPGP 定义

--pgp2 生成与 PGP 2.x 兼容的报文


(请参考在线说明以获得所有命令和选项的完整清单)


范例:


-se -r Bob [文件名] 为 Bob 这个收件人签名及加密

--clearsign [文件名] 做出明文签名

--detach-sign [文件名] 做出分离式签名

--list-keys [某甲] 显示密钥

--fingerprint [某甲] 显示指纹


请向 <gnupg-bugs@gnu.org> 报告程序缺陷。

请向 <zuxyhere@eastday.com> 反映简体中文翻译的问题。


生成密钥对


$ gpg --gen-key

gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.

This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it

under certain conditions. See the file COPYING for details.


请选择您要使用的密钥种类:

(1) DSA 和 ElGamal (默认)

(2) DSA (仅用于签名)

(5) RSA (仅用于签名)

您的选择? 1

DSA 密钥对会有 1024 位。

ELG-E 密钥长度应在 1024 位与 4096 位之间。

您想要用多大的密钥尺寸?(2048)

您所要求的密钥尺寸是 2048 位

请设定这把密钥的有效期限。

0 = 密钥永不过期

<n> = 密钥在 n 天后过期

<n>w = 密钥在 n 周后过期

<n>m = 密钥在 n 月后过期

<n>y = 密钥在 n 年后过期

密钥的有效期限是?(0) 1y

密钥于 03/19/08 08:53:26 过期

以上正确吗?(y/n)y


您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合

成用户标识,如下所示:

“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”


真实姓名:etony

电子邮件地址:etony@tom.com

注释:test

您选定了这个用户标识:

“etony (test) <etony@tom.com>”


更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?


您需要一个密码来保护您的私钥。


我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动

鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

+++++++++++++++++++++++++.++++++++++.++++++++++++++++++++++++++++++.++++++++++++

+++++++++++++++++++++++..+++++.+++++++++++++++.++++++++++>..++++++++++...>.+++++

.............................<+++++.........>.+++++...+++++

gpg: NOTE: you should run 'diskperf -y' to enable the disk statistics

gpg: NOTE: you should run 'diskperf -y' to enable the disk statistics

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动

鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

+++++.++++++++++++++++++++.++++++++++++++++++++++++++++++.+++++.+++++.+++++.++++

+.++++++++++++++++++++++++++++++++++++++++.+++++.++++++++++..+++++++++++++++>+++

+++++++>.+++++................................+++++^^^

gpg: 密钥 4FA1A3C6 被标记为绝对信任

公钥和私钥已经生成并经签名。


gpg: 正在检查信任度数据库

gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型

gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u

gpg: 下次信任度数据库检查将于 2008-03-19 进行

pub 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]

密钥指纹 = AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6

uid etony (test) <etony@tom.com>

sub 2048g/A085553C 2007-03-20 [有效至:2008-03-19]


生成吊销证书


$ gpg --output revoke.ase --gen-revoke etony@tom.com


sec 1024D/4FA1A3C6 2007-03-20 etony (test) <etony@tom.com>


要为这把密钥建立一份吊销证书吗?(y/N)y

请选择吊销的原因:

0 = 未指定原因

1 = 密钥已泄漏

2 = 密钥被替换

3 = 密钥不再使用

Q = 取消

(也许您会想要在这里选择 1)

您的决定是什么?2

请输入描述(可选);以空白行结束:

>

吊销原因:密钥被替换

(不给定描述)

这样可以吗? (y/N)y


您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”

1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20


已强行使用 ASCII 封装过的输出。

已建立吊销证书。


请把这个文件转移到一个可隐藏起来的介质(如软盘)上;如果坏人能够取得这

份证书的话,那么他就能让您的密钥无法继续使用。把这份凭证打印出来再藏

到安全的地方也是很好的方法,以免您的保存媒体损毁而无法读取。但是千万

小心:您的机器上的打印系统可能会在打印过程中把这些数据临时在某个其他

人也能够看得到的地方!


列出公钥


$ gpg --list-key

/home/tony/.gnupg/pubring.gpg

--------------------------------------------------------------------------

pub 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]

uid etony (test) <etony@tom.com>

sub 2048g/A085553C 2007-03-20 [有效至:2008-03-19]


列出私钥


$ gpg --list-secret-key

/home/tony/.gnupg/secring.gpg

--------------------------------------------------------------------------

sec 1024D/4FA1A3C6 2007-03-20 [有效至:2008-03-19]

uid etony (test) <etony@tom.com>

ssb 2048g/A085553C 2007-03-20


导出公钥


$ gpg --output etony.gpg --export etony@tom.com


$ gpg --armor --export etony@tom.com


-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v1.4.7 (MingW32)


mQGiBEX/MOERBAC3X5lw7sWeGs/jMM9Ujg+SQY22NZPZytP+UrnSLQntRCzgLCiW

93IznTJJ6qBqbHy4YxipvBvDuc/7/jlIe/iQg1w+pmCAaV9E9IsuQt480agZqHom

pDEDoN17xS47+iuw+aRtry3led/5o5EzKkbB80BY1wlhNrWeH+3XChOjHwCggXim

J9Z/d0LnBjyeIIiCJ1WL3ksEALEvEswe5fVaEukhXE4yomGF5oqVPI43j9h7cqQ8

pqUH1OnEpCnayt4Qm29XuWkHtxsqyCJ+QslJ/f38OVDgzMRaHMCPH4NjYplbwduR

dOzn/5iYONhHrVE61FObrQMXS5Skq0tNvxzdznH8gha4yKNypaRpppqmQD6hxnrq

jJuIA/9xo7rApqEu5GpTbHLgLGs+MCk8cTH/xH+U6glD5hUyQLRGQO0NqWRfQQ7b

BgZijgM9mYV2LS6UE/TKgslqkPLr/w622Qx3/hfL+ispPIpC0uy03W6aQyh8nBWr

glIK0HNhKPOEJx86adPtHvXNdemspjhbrBARvc0ublXmVVdNmrQcZXRvbnkgKHRl

c3QpIDxldG9ueUB0b20uY29tPohmBBMRAgAmBQJF/zDhAhsDBQkB4TOABgsJCAcD

AgQVAggDBBYCAwECHgECF4AACgkQ/QuyH0+ho8ZhTACbBCO9jJp4p6K9ePA5HYJk

gfs7ploAnj/4LaBMxyTaeShBZRf/HPTpFwvIuQINBEX/MOEQCACo6jLmqikWonnD

G/MXyMMYB1Xs4RB+xu9TrNqZbqSXksPgasll+T64qwd7QiMwN6768jNjF52Cmpms

CbFGy1DjIpoybZs/eUEA3t0v/Bjyjxm+c7uO1WPog4lqI8GeRUkvNLnq4ncKrKcp

oKPixSdpxKiPPSqifxGrONtD6HCU/3BbkdTOole/VtHFOQujyakTJLKPWX2wjb0L

InCAMOZIVL20F7XOMw2IOtp2EoEZNtHUneKTYUg5zo2DNMsz9sRcYsm78NRDbVlj

veuWN9bJ9xDKFYlj06yNYJik19Uzo/+8RPNzPghGb770wRoAoT7FyV2kd8incY4h

fS/v6DpjAAMFB/9Ke0dlVLpEvLJpq89iKlm0iG386Wi5u+AHlYOdvQ8VvC5mXwyh

qt9h+5i4DApE3HtSOcjCQ97RBsyaa26RtPzZDwTSrMW5DVDlGS3VNsfHalAlRdfD

dzZNhkmu3JUr5NMA4v9m3utTSl91ZU6mh4Hvj3DEGjbCp1QhImJO6OJ4HAakztiH

hOsql5aqDfGSMwnSRfIH1Yluej4gysCOi9BhpdjyLGJTckDGh8HklqHBQW55MqLu

tPIqwdNbEreKOzch/CxixJkn4olt+/STBrTN5MEtGnx8R3GcIY/tBPpLL01kAeCY

Y7JDOXXy7hgzLSxoahMvByGLuSOt7owThyykiE8EGBECAA8FAkX/MOECGwwFCQHh

M4AACgkQ/QuyH0+ho8briQCeKqRTXoGmNeiGu6vrpqK0eTMGv6gAn0+B8jZLMZFH

8PePPJUB5t5yzqt5

=pL1y

-----END PGP PUBLIC KEY BLOCK-----



导出私钥


$ gpg --armor --export-secret-keys etony@tom.com

-----BEGIN PGP PRIVATE KEY BLOCK-----

Version: GnuPG v1.4.7 (MingW32)


lQHhBEX/MOERBAC3X5lw7sWeGs/jMM9Ujg+SQY22NZPZytP+UrnSLQntRCzgLCiW

93IznTJJ6qBqbHy4YxipvBvDuc/7/jlIe/iQg1w+pmCAaV9E9IsuQt480agZqHom

pDEDoN17xS47+iuw+aRtry3led/5o5EzKkbB80BY1wlhNrWeH+3XChOjHwCggXim

J9Z/d0LnBjyeIIiCJ1WL3ksEALEvEswe5fVaEukhXE4yomGF5oqVPI43j9h7cqQ8

pqUH1OnEpCnayt4Qm29XuWkHtxsqyCJ+QslJ/f38OVDgzMRaHMCPH4NjYplbwduR

dOzn/5iYONhHrVE61FObrQMXS5Skq0tNvxzdznH8gha4yKNypaRpppqmQD6hxnrq

jJuIA/9xo7rApqEu5GpTbHLgLGs+MCk8cTH/xH+U6glD5hUyQLRGQO0NqWRfQQ7b

BgZijgM9mYV2LS6UE/TKgslqkPLr/w622Qx3/hfL+ispPIpC0uy03W6aQyh8nBWr

glIK0HNhKPOEJx86adPtHvXNdemspjhbrBARvc0ublXmVVdNmv4DAwJ/UjMXQhtQ

P2BPCaGcixZeseEXEFFdX9DnEKTueNiI44V1C6oIzZgD4I61A2X89+w+0UDWhXhp

/FwhRrQcZXRvbnkgKHRlc3QpIDxldG9ueUB0b20uY29tPohmBBMRAgAmBQJF/zDh

AhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ/QuyH0+ho8ZhTACb

BCO9jJp4p6K9ePA5HYJkgfs7ploAnj/4LaBMxyTaeShBZRf/HPTpFwvInQJjBEX/

MOEQCACo6jLmqikWonnDG/MXyMMYB1Xs4RB+xu9TrNqZbqSXksPgasll+T64qwd7

QiMwN6768jNjF52CmpmsCbFGy1DjIpoybZs/eUEA3t0v/Bjyjxm+c7uO1WPog4lq

I8GeRUkvNLnq4ncKrKcpoKPixSdpxKiPPSqifxGrONtD6HCU/3BbkdTOole/VtHF

OQujyakTJLKPWX2wjb0LInCAMOZIVL20F7XOMw2IOtp2EoEZNtHUneKTYUg5zo2D

NMsz9sRcYsm78NRDbVljveuWN9bJ9xDKFYlj06yNYJik19Uzo/+8RPNzPghGb770

wRoAoT7FyV2kd8incY4hfS/v6DpjAAMFB/9Ke0dlVLpEvLJpq89iKlm0iG386Wi5

u+AHlYOdvQ8VvC5mXwyhqt9h+5i4DApE3HtSOcjCQ97RBsyaa26RtPzZDwTSrMW5

DVDlGS3VNsfHalAlRdfDdzZNhkmu3JUr5NMA4v9m3utTSl91ZU6mh4Hvj3DEGjbC

p1QhImJO6OJ4HAakztiHhOsql5aqDfGSMwnSRfIH1Yluej4gysCOi9BhpdjyLGJT

ckDGh8HklqHBQW55MqLutPIqwdNbEreKOzch/CxixJkn4olt+/STBrTN5MEtGnx8

R3GcIY/tBPpLL01kAeCYY7JDOXXy7hgzLSxoahMvByGLuSOt7owThyyk/gMDAn9S

MxdCG1A/YHSam634Q1L7LivR8bIquGe50Gj9v8FQdwWJ73EdPhapRBbzXmWKGXQj

7+aonlHclzxHFUphVA1oeJYWroROfKDa/yEPbFWyw2GITwQYEQIADwUCRf8w4QIb

DAUJAeEzgAAKCRD9C7IfT6GjxuuJAJ0UgxD/Pnxtw2EMEvyEumL/kKiqcACffZdU

CsRssPq1INdi8AGnVFvMNvk=

=IFCr

-----END PGP PRIVATE KEY BLOCK-----


导入密钥


$ gpg --import etony.gpg

gpg: 密钥 4FA1A3C6:公钥“etony (test) <etony@tom.com>”已导入

gpg: 合计被处理的数量:1

gpg: 已导入:1


编辑密钥


$ gpg --edit-key etony@tom.com

gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.

This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it

under certain conditions. See the file COPYING for details.


pub 1024D/4FA1A3C6 创建于:2007-03-20 有效至:2008-03-19 可用于:SC

信任度:未知 有效性:未知

sub 2048g/A085553C 创建于:2007-03-20 有效至:2008-03-19 可用于:E

[ 未知 ] (1). etony (test) <etony@tom.com>

命令> help

quit 离开这个菜单

save 保存并离开

help 显示这份在线说明

fpr 显示密钥指纹

list 列出密钥和用户标识

uid 选择用户标识 N

key 选择子钥 N

check 检查签名

sign 为所选用户标识添加签名[* 参见下面的相关命令]

lsign 为所选用户标识添加本地签名

tsign 为所选用户标识添加信任签名

nrsign 为所选用户标识添加不可吊销签名

deluid 删除选定的用户标识

delkey 删除选定的子钥

delsig 删除所选用户标识上的签名

pref 列出首选项(专家模式)

showpref 列出首选项(详细模式)

trust 更改信任度

revsig 吊销所选用户标识上的签名

enable 启用密钥

disable 禁用密钥

showphoto 显示选定的照片标识

clean 压缩不可用的用户标识并删除不可用的签名

minimize 压缩不可用的用户标识并删除所有签名


* ‘sign’命令可以带‘l’前缀(lsign)以添加本地签名,或‘t’前缀(tsign)以添加

信任签名,或‘nr’前缀(nrsign)以添加不可吊销签名,或者以上三种前缀的任何组

合(ltsign、tnrsign 等)。


命令> check

uid etony (test) <etony@tom.com>

sig!3 4FA1A3C6 2007-03-20 [自身签名]


文件加密


$ gpg --output test.gpg --recipient etony.an@gmail.com --encrypt test.txt

gpg: 9CC58940:没有证据表明这把密钥真的属于它所声称的持有者


pub 2048g/9CC58940 2007-03-15 etony C.F.AN (etony@tom.com) <etony.an@gmail.com>


主钥指纹: 2F1D D32D E993 37E9 09A8 6292 A6C5 E506 738D F159

子钥指纹: 5F2B 2456 519E 1713 1F86 F51D A501 B60D 9CC5 8940


这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自

己在做什么,您可以在下一个问题回答 yes。


无论如何还是使用这把密钥吗?(y/N)y


$ gpg --armor --output test.gpg --recipient etony.an@gmail.com --encrypt test.txt


文件解密


$ gpg --output test --decrypt test.gpg


您需要输入密码,才能解开这个用户的私钥:“etony C.F.AN (etony@tom.com) <etony.an

@gmail.com>”

2048 位的 ELG-E 密钥,钥匙号 9CC58940,建立于 2007-03-15 (主钥匙号 738DF159)


gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 9CC58940、生成于 2007-03-15

“etony C.F.AN (etony@tom.com) <etony.an@gmail.com>”


文件签名


$ gpg --output test.sig --sign test.txt


您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”

1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20


文件解密


$ gpg --armor --output test --decrypt test.sig

gpg: 于 03/20/07 09:55:49 创建的签名,使用 DSA,钥匙号 4FA1A3C6

gpg: 完好的签名,来自于“etony (test) <etony@tom.com>”

gpg: 警告:这把密钥未经受信任的签名认证!

gpg: 没有证据表明这个签名属于它所声称的持有者。

主钥指纹: AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6


明文签名


$ gpg --output test.sig --clearsign test.txt


您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”

1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20


签名文件内容


-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1


1234567890qwertyuiopasdfghjklzxcvbnm

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.7 (MingW32)


iD8DBQFF/z+s/QuyH0+ho8YRAg/BAJ4rooYLAPHfQwAA9iF8NMMSAifIaQCeOCIt

bwI6GTKt9Aqim/iHM8FoZvM=

=VHit

-----END PGP SIGNATURE-----


只做签名


$ gpg --output test.sig --detach-sign test.txt


您需要输入密码,才能解开这个用户的私钥:“etony (test) <etony@tom.com>”

1024 位的 DSA 密钥,钥匙号 4FA1A3C6,建立于 2007-03-20


$ gpg --armor --output test.sig --detach-sign test.txt


签名内容


-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.7 (MingW32)


iD8DBQBF/0BS/QuyH0+ho8YRAqeUAJ9KZA5ePJorCA56cFhp+CsBPOlNTgCZAcav

UKkQmkaLMeqN3ddDc1U6BZk=

=wXL+

-----END PGP SIGNATURE-----


校验签名


$ gpg --verify test.sig test.txt

gpg: 于 03/20/07 10:00:50 创建的签名,使用 DSA,钥匙号 4FA1A3C6

gpg: 完好的签名,来自于“etony (test) <etony@tom.com>”

gpg: 警告:这把密钥未经受信任的签名认证!

gpg: 没有证据表明这个签名属于它所声称的持有者。

主钥指纹: AC10 1779 4C28 5B9F 0680 D4FB FD0B B21F 4FA1 A3C6

2007年3月19日星期一

公钥体系结构中的几个概念

公钥体系结构中的几个概念

  基于非对称加密体系,可建立起一套优秀的安全体系结构、称为公钥体系结构。以下介绍公钥体系结构中的一些基本概念与结构组成。

密钥对、证书和CA

  1) 密钥对

  在基于公钥体系的安全系统中,密钥是成对生成的,每对密钥由一个公钥和一个私钥组成。在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。为了使基于公钥体系的业务(如电子商务等)能够广泛应用,一个基础性关键的问题就是公钥的分发与管理。

   公钥本身并没有什么标记,仅从公钥本身不能判别公钥的主人是谁。

   在很小的范围内,比如A和B这样的两人小集体,他们之间相互信任,交换公钥,在互联网上通讯,没有什么问题。这个集体再稍大一点,也许彼此信任也不成问题,但从法律角度讲这种信任也是有问题的。如再大一点,信任问题就成了一个大问题。

  2) 证书

  互联网络的用户群决不是几个人互相信任的小集体,在这个用户群中,从法律角度讲用户彼此之间都不能轻易信任。所以公钥加密体系采取了另一个办法,将公钥和公钥的主人名字联系在一起,再请一个大家都信得过有信誉的公正、权威机构确认,并加上这个权威机构的签名。这就形成了证书,如下图。

  

公钥
公钥主人的信息
权威机构的签名


  由于证书上有权威机构的签字,所以大家都认为证书上的内容是可信任的;又由于证书上有主人的名字等身份信息,别人就很容易地知道公钥的主人是谁。

3) CA(Certificate Authority)

  前面提及的权威机构就是电子签证机关(即CA)。CA也拥有一个证书(内含公钥,与上图所示相同),当然,它也有自己的私钥,所以它有签字的能力。网上的公众用户通过验证CA的签字从而信任CA,任何人都应该可以得到CA的证书(含公钥),用以验证它所签发的证书。

   如果用户想得到一份属于自己的证书,他应先向CA提出申请。在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给那个用户(申请者)。

   如果一个用户想鉴别另一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证(如前所述,CA签字实际上是经过CA私钥加密的信息,签字验证的过程还伴随使用CA公钥解密的过程),一旦验证通过,该证书就被认为是有效的。

   CA除了签发证书之外,它的另一个重要作用是证书和密钥的管理。

   由此可见,证书就是用户在网上的电子个人身份证,同日常生活中使用的个人身份证作用一样。CA相当于网上公安局,专门发放、验证身份证。

   诺方宏证电子签证机关正是一个基于相关国际标准的网上CA系统。

  相关国际标准

  PKI (Public-Key Infrastructure) 公钥体系基础框架。
   PKIX (Public-Key Infrastructure Using X.509)使用X.509的公钥体系基础框架。
  X.500 由ISO和ITU提出的用于为大型网络提供目录服务的标准体系。
  X.509 为X.500提供验证(Authenticating)体系的标准。
  PKCS(Public Key Cryptography Standards)公钥加密标准,为PKI提供一套完善的标准体系。

  对于任何基于公钥体系的安全应用,必须确立其PKI。而电子签证机关(CA)是PKI中的一个关键的组成部分,它主要涉及两方面的内容,即公钥证书的发放和公钥证书的有效性证明。在PKIX中,CA遵循X.509标准规范。
   X.509最早的版本X.509v1是在1988年提出的,到现在已升级到X.509v3,现将其涉及到的主要内容以及与前版本的比较列于下表。

X.509 PKI国际标准更新版本对照表

X.509 PKI 主要特性

 

X.509 v1 & 2

X.509 v3

证书信息

只有X.500 实体名,包括CA、证主(subject)名,证主公钥及其有效期。

充分扩展,可包含任何信息。

CA 规范

CA体系鼓励带交叉的层状树型结构,无信任限制规范。

CA体系鼓励带交叉的层状树型结构,有信任限制规范。

CA «证主 « 用户

CA、证主、用户在概念上严格区分

CA «证主 « 用户 信任关系

认为每个用户至少信任一个CA。CA无法操纵与其它CA、证主及用户间的信任关系。

认为每个用户至少信任一个CA。CA可以规范与其它CA及证主间的信任关系。

证书有效性验证方式

离线方式,通过检查证书有效期及是否出现在最近的CRL(证书吊销表)上。

支持离线与在线方式。

证书吊销方法

简单CRL。

复杂的CRL,通过功能扩展支持在线方式。

证书形式特点

身份形式的证书。

主要还是身份形式的证书,但支持信任委托形式的证书。

匿名性

匿名程度依赖于 X.500 条目的匿名程度。

扩展功能支持彻底的匿名服务。

2007年3月16日星期五

openssl简明使用手册

简要介绍了使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程

1. 首先建立CA密钥:
openssl genrsa -des3 -out ca.key 1024 (创建密钥)
chmod 400 ca.key (修改权限为仅root能访问)
openssl rsa -noout -text -in ca.key (查看创建的证书)

2. 利用CA密钥自签署CA证书:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crtchmod 400 ca.crt (修改权限为仅root能访问)
openssl x509 -noout -text -in ca.crt (查看创建的证书)

3. 创建服务器证书签署申请:
openssl genrsa -des3 -out client.key 1024chmod 400 server.key (修改权限为仅root能访问)openssl rsa -noout -text -in client.key (查看创建的证书)

4. 利用证书签署申请生成请求:
openssl req -new -key client.key -out client.csropenssl req -noout -text -in client.csr (查看创建的请求)

5.进行证书签署:
这时候需要先设置一下openssl的配置文件。
modify /usr/share/ssl/openssl.cnf
并根据这个配置文件创建相应的目录和文件。在创建了serial文件之后,还需要添加当前的八进制的serial number,如:01然后执行:
openssl ca -keyfile ca.key -cert ca.crt -in client.csr -out client.pem

6.证书撤销:
openssl ca -keyfile ca.key -cert ca.crt -revoke client.pem
这时数据库被更新证书被标记上撤销的标志,需要生成新的证书撤销列表:
openssl ca -gencrl -keyfile ca.key -cert ca.crt -out crl/test.crl
查看证书撤销列表:
openssl crl -noout -text -in crl/test.crl
证书撤销列表文件要在WEB站点上可以使用,必须将crldays或crlhours和crlexts加到证书中:openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 -crlexts crl_ext -out crl/sopac-ca.crl

用OpenSSL命令行生成证书文件
Tomcat下双向SSL安全认证

常见数字证书格式和文件扩展名

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRTX.509
PAM 编码(Base64)的后缀是: .PEM .CER .CRT

在OpenSSL的工具集中,一般可以使用 -outform -inform 指定 DER 还是 PAM 格式。
例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

OpenSSL 中 PEM 到 PKCS#12 的转换,参考命令:
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

OpenSSL 中 PKCS#12 到 PEM 的转换,可参考:
openssl pkcs12 -in Cert.p12 -out Key.pem
openssl x509 -in Key.pem -text -out Cert.pem

第一篇blog

http://etony.livejournal.com/ 被封了,
不知道这里会不会被封!