OPENSSL¤Jªù

¹ï©óopenssl¨Ó»¡§Ú¤wµh­W«Ü¤[¤F,©l²×¤£±o¨äªù¦Ó¤J,ÁöµM¥i¥H§ä¨ì¦p¦ó«Ø¥ß key, pemµ¥ªº¬ÛÃö«ü¥O,µM¦Ó«Ü¤Ö´£°Ñ¼Æªº¥Îªk¡A©Î¬Oªø½g¤j½×½Í±K½X¾Çªº²z½×,µ²ªG§ÚÁÙ¬O¤@ª¾¥b¸Ñ,´M¹Mºô¸ô¤]§ä¤£¨ì¤Jªùªº¦n®Ñ,¥H¤U¬O¤JªùªºÁ¿¸ÑÆ[©À(¤£¨Ï¥ÎÃø À´ªº¦r²´),¤£½Íºtºâªk,¦ý¥i À°§U§A«Ø ¥ß Æ[©À,¦pªG­n²`¤J½Ð°Ñ¦Ò¨ä¥¦ªº¸ê®Æ,§Ú¦b®Ñ§½§ä¨ìªº®Ñ¤£¦h,¨â¥»­ì¤å/¤@¥»¤¤¤å,­ì¤åopenssl(1300¥ª¥k),SSL and TLS designing and Building Secure Systems(1200¤¸¥ª¥k),§Ú°Ñ¦Ò¤W­z®Ñ¥»,¤Î¦p¦ó»s§@ SSL X.509 ¾ÌÃÒ¡H,¤Îhttp://en.wikipedia.org/wiki/X.509
¥»¤å©|¦b¼¶¼g¤¤....

Secure Sockets Layer protocol(SSL)¦³¦ó¥Î³B?
§Aªº¸ê®Æ¦bºô¸ô¤W¶Ç¿é¦w¥þ¶Ü¡H¥i¥H«Üª½±µ»¡¤£¦w¥þ¡A¦bºô¸ôµo®i¤§ªì¡A©Ò¦³¶Ç¿é¨ó©wªº«Ê¥]³£¬O©ú½X¨Ó¶Ç°e¡C¦Ó¥Bºô¸ôªº¶Ç¿é³£¬O¥H±µ¤Oªº¤è¦¡¨Ó¼h¼hÂà°e¡A¦]¦¹ ¸ê®Æ¥i¥H«Ü®e©öªº³QÄd§T¡B½Æ»s¡B¿y­×§ï¡C
¬°¤F¦w¥þªº½t¬G¡A¸ê®Æ¥[±K¶} ©l³QÀ³¥Î¦b¶Ç¿é­±¡A¥u­n¦bºô¸ô¶Ç¿é¬O½s½Xªºª¬ºA¤U,´N¥i¥H½T«O¸ê®Æ¤£©ö¥~¬ª,¦Ó½s½X¨Ó»¡¤@¯ë¨Ó»¡¤À¬°¨âºØ¡G

¹ïºÙ¦¡¥[¸Ñ±Kªk(½s½X¸Ñ½X¨Ï¥Î¦P¤@­Ókey)
  1. ½s½X¡@key+­ì©l¸ê®Æ¡Ð¡Ö½s½X¸ê®Æ
  2. ¸Ñ½X¡@key+½s½X¸ê®Æ¡Ð¡Ö­ì©l¸ê®Æ
«D¹ïºÙ¦¡¥[¸Ñ±Kªk(½s½X¸Ñ½X¨Ï¥Î¤£¦Pªºkey)
  1. ½s½X¡@key1+­ì©l¸ê®Æ¡Ð¡Ö½s½X¸ê®Æ
  2. ¸Ñ½X¡@key2+½s½X¸ê®Æ¡Ð¡Ö­ì©l¸ê®Æ

¦]¹ïºÙ¦¡¥[¸Ñ±Kªk¨Ï¥Î¦P¤@§âkey¡A¦p¦ó§â¸Ó§âkey¶Ç¨ì¦¬¸ê®Æ¨Ï¥ÎªÌªº¤âùØ¡H¹ï¤è¦³§Aªºkey·|¤£·|°°³y§A°e¥X¸ê®Æ©O¡H³o±µ³s¦Ó¨Óªº¦w¥þ©Ê°ÝÃD¡AÅý¹ïºÙ ¦¡¥[¸Ñ±KªkªºµLªkº¡¨¬¦b³s½u·¾³q¶¥¬q¡A µM¦Ó¨ä¥[¸Ñ±Kªº³t«×¤ñ¸û§Ö

«D¹ïºÙ¦¡¥[¸Ñ±Kªkªº­ì²z
¥ý¨ú±o¤@­Óprivate key (public key¬O¥i¥Ñprivate key©Òºtºâ¦Ó¨Óªº¡^


­ì«h
1.private key¥u¦³§A¾Ö¦³(§A­n«OÅ@¥¦¤£³Q§O¤H¨ú±o),¦Ópublic key¬O¥i¤½¶}¦bºô¸ô¤W´²§G
2.¨Ï¥Î¥ô¦ó¤@­Ókey¨Ó¥[±K¸ê®Æ,¥u¯à¥Ñ¬Û¹ïkey¨Ó¸Ñ±K¸ê®Æ
3.§O¤H¶Ç°e¸ê®Æµ¹§A,¥u¦³§A¯à¸Ñ,¦]¬°¨pÆ_¥u¦³§A¦³

²³æªºÂsÄý¾¹³s½u¨BÆJ(https)
  1. ÂsÄý¾¹¨Ï¥Îhttps¦Vºô­¶¦øªA¾¹­n¨D³s½u
  2. ºô­¶¦øªA¾¹¶Ç°ecertificateµ¹ÂsÄý¾¹
  3. ÂsÄý¾¹Àˬdcertificate
  4. ÂsÄý¾¹¨Ï¥Îpublic key¥[±K"ÀH¾÷²£¥Íªº¹ïºÙ¦¡¥[±Kkey",¶Çµ¹ºô­¶¦øªA¾¹
  5. ºô­¶¦øªA¾¹¨Ï¥Î¹ïºÙ¦¡key¥[±K­n¶Ç°e¨ìÂsÄý¾¹ªº¸ê®Æ(¦]¬°¹ïºÙkey¹Bºâ¤ñ¸û§Ö)
  6. ÂsÄý¾¹¦Vºô­¶¦øªA¾¹­nªº¸ê®Æ¤]¨Ï¥Î¹ïºÙ¦¡key¥[±K

À³¥Î¹ê¨Ò:
¥H¤U°Ñ¦Òopenssl Certificate cookbookªºIntroducing SSL and Certificates ¤@³¹,¥Î§Úªº»yªk¼g¥X
Alice­n°e¤@«Ê«Hµ¹¥¦ªº»È¦æ,­n±N¤½¥q±b¸¹ªº¬Y¤@¼Æ¶qªº¿ú¶×¥X¨ì¥t¤@­Ó±b¸¹,¥L¤£­n§O¤H¬Ý¨ì¥Lªº¤@¨Ç¸ê°T,¥u¦³»È¦æ¯à¬Ý¨ì,¦]¦¹¥L»Ý­n¤@­Ó½s½Xªº¤è ªk,¥u¦³»È¦æ¥i¥H¬Ý¨ì¥Lªº¸ê®Æ,®Ú¾Ú³o­ÓÆ[ÂI§Ú­Ì¥i¥H¨Ï¥Î«D¹ïºÙ¦¡ªº½s½X¨Ï¥Î»È¦æªº¤½Æ_¨Ó½s½X,³o¼Ë¥u¦³»È¦æ¨pÆ_¥i¥H¸Ñ±K¸Ó«H,¦ý¬O¦p¦ó½T©w«H¥ó¨S¦³¾D¥¦ ¤H­×§ï?
Message Digests(°T®§ºK­n)
¨Ï¥Î¤@ºØ¼Æ¾Ç¨ç¦¡,±N¶l¥ó¹Bºâ²£¥Í¤@­Ó¼Æ­È(¤£¦Pªº«H¥óÃø¥H²£¥Í¬Û¦Pªºdigest,¦ý¤´¦³¥i¯à),³o­Ó¼Æ­ÈºÙ¬°hash©Îmessage digest,¦pªG¶l¥ó¦³Åܧó¹L,«h³o­Ó¼Æ­È¤]·|Åܧó,¦]¦¹¥i¥H¥Î¨ÓÀˬd¶l¥ó¹ï¬O§_³Q­×§ï,¦]¦¹Alice¦b¶l¥ó¤¤¥[¤J¤Fdigest,µM¦Ódigest ¨S¦³½s½X,«h©M­ì¨Ó¶l¥ó³£¥i¥H³Q­×§ï,¦]¦¹¤£°÷¦w¥þ?
Digital signatures (¼Æ¦ìñ¦W)
¬°¤F½T»{¨Ï¥ÎªÌ§Ú­Ì¨Ï¥Î¥t¤@­Ó¾÷¨î¥s¼Æ¦ìñ¦W,±N¤W­zªºdigest¨Ï¥Î¦Û¤vªº¨pÆ_¨Ó¥[±K,¶l¥ó¥]§t¤F¨Ï¥Î»È¦æ¤½Æ_¥[±Kªº¶l¥ó+¨Ï¥Î¥»¤H¨pÆ_¥[±Kªº digest+¥»¤H¤½Æ_,ªþ¤W¤½Æ_ªº¥Î·N¬O§O¤H¥i¥H¸Ñ¶}digest,ÁöµM¨pÆ_¥u¦³Alice¦³,¦ý§Ú¤´µLªk±oª¾½T©w¬Oaliceªº?
Certificates(¾ÌÃÒ)
²{¦bAlice¥i¥H¶Ç°e¥X¥h¨p¤Hªº¶l¥ó¨ì»È¦æ,¨Ãñ¦W,¨Ã½T©w¶l¥óµLªk³Q­×§ï,µM¦ÓAlice­n½T©w¥¦¨Ï¥Îªº¤½Æ_¬O¯u¥¿¨Ó¦Û»È¦æ,¦Ó»È¦æ¤]­n½T©w Aliceªº¤½Æ_¬O¨Ó¦ÛAlice,¦pªG»È¦æ¤ÎAlice³£¦³¤@­Ó¾ÌÃÒÃÒ©ú¥L­Ì¬O½Ö(¦p¨­¥÷ÃÒ),§Ú­Ì³z¹LCertificate Authority(¾ÌÃÒªº»{ÃÒ¤¤¤ß),À°§Ú­Ì½T»{¨­¥÷

Certificates Req(¾ÌÃÒ­n¨D)
 §Ú­Ì­n½Ð¾ÌÃÒ¤¤¤ßµo¾ÌÃÒ®É,¥²»Ý¦³"¾ÌÃÒ­n¨D"¨Ó¦V¾ÌÃÒ¤¤¤ß­n¨Dµo,¥¦¬O¤@ºØÀɮ׮榡,§t¦³¾ÌÃһݭnªº¸ê°T,§A»Ý­n¨pÆ_¨Óñµo ­n¨D,¨pÆ_¬O¥ô¦ó

X.509?
­l¥Í¦Ûx.500ªº¾ÌÃÒ(³o¬O¨ä¤¤¤@ºØ¾ÌÃÒ¦Ó¤v)
³o¬O¥]§t¤F¤@­ÓCA ñÃÒªº¾ÌÃҤΤ½keyªº


¾ÌÃÒ¤º®e(½Ð°O¦í¤j·§ªº¤º®e)
¾ÌÃÒ¦³¤£¦Pªº®æ¦¡(¥H¤U¬O¤å¦r®æ¦¡)
µo§G¤HIssuer
¾ÌÃÒ
¾ÌÃÒ¾Ö¦³¤Hªº¤½Æ_
¤é´Á
ñ¦W(¨S¦³³Q­×§ï)
(µ´¤£·|¥]§t¨pÆ_)

°ÆÀɦW.crtÅã¥Ü¦p¤U:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=TW, ST=Taiwan, L=Taipei, O=test Shipping co., Ltd., OU=computer , CN=csc /emailAddress=csc@test.com
Validity
Not Before: Mar 9 08:53:36 2005 GMT
Not After : Mar 9 08:53:36 2006 GMT
Subject: C=TW, ST=Taiwan, L=Taipei, O=test Shipping co., Ltd., OU=computer , CN=csc /emailAddress=csc@test.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ce:cc:79:df:e6:f9:cb:11:4b:18:da:57:87:b2:
0c:6c:61:13:b2:3b:a8:7e:94:fb:8b:b3:5d:91:c5:
d1:52:4f:04:7c:fd:84:15:41:c0:c1:3e:c6:7d:ce:
f6:3a:b5:5b:08:97:70:0d:4c:0b:77:58:82:ba:36:
0d:c5:33:18:c5:55:a4:d2:1d:aa:ff:05:d8:b0:19:
7e:53:1d:21:52:ab:9d:aa:37:25:87:1c:f6:a9:1b:
e8:78:a9:f3:cf:b2:32:c7:15:d6:b7:c3:32:b2:2b:
6a:72:6c:ed:e9:68:ff:27:07:2e:29:12:e1:f1:51:
6f:c9:46:e5:78:54:4f:d2:9d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
DF:B4:69:03:7C:3A:A3:CA:2E:93:47:AC:55:23:8B:4F:E6:42:19:5F
X509v3 Authority Key Identifier:
keyid:DF:B4:69:03:7C:3A:A3:CA:2E:93:47:AC:55:23:8B:4F:E6:42:19:5F
DirName:/C=TW/ST=Taiwan/L=Taipei/O=test Shipping co., Ltd./OU=computer /CN=csc /emailAddress=csc@ocean-pioneer.com
serial:00

X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
7a:60:d2:c3:2c:a7:5a:77:0e:d8:c8:1f:0e:c4:74:99:9a:59:
f6:f6:f5:cf:e5:4d:96:c9:78:73:b2:46:02:f2:f3:6e:71:fc:
97:f5:76:0d:3a:2e:eb:e3:21:1d:c4:2a:ea:97:18:1d:76:a8:
dd:7f:24:a8:5c:23:34:32:b6:e3:ee:87:6a:a5:80:b3:7a:e5:
fc:70:ec:12:06:a1:4a:34:d4:69:0a:41:9b:0a:19:d7:82:64:
67:ea:3f:e4:2d:58:f1:cf:b7:38:d7:95:7c:7d:67:ae:6f:03:
82:79:1b:ac:7f:0c:bb:1d:1c:a7:f0:ec:fe:90:d7:81:9c:49:
af:53

-----BEGIN CERTIFICATE-----
MIIDxDCCAy2gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBozELMAkGA1UEBhMCVFcx
DzANBgNVBAgTBlRhaXdhbjEPMA0GA1UEBxMGVGFpcGVpMSkwJwYDVQQKEyBPY2Vh
biBQaW9uZWVyIFNoaXBwaW5nIGNvLiwgTHRkLjESMBAGA1UECxMJY29tcHV0ZXIg
MQ0wCwYDVQQDEwRjc2MgMSQwIgYJKoZIhvcNAQkBFhVjc2NAb2NlYW4tcGlvbmVl
ci5jb20wHhcNMDUwMzA5MDg1MzM2WhcNMDYwMzA5MDg1MzM2WjCBozELMAkGA1UE
BhMCVFcxDzANBgNVBAgTBlRhaXdhbjEPMA0GA1UEBxMGVGFpcGVpMSkwJwYDVQQK
EyBPY2VhbiBQaW9uZWVyIFNoaXBwaW5nIGNvLiwgTHRkLjESMBAGA1UECxMJY29t
cHV0ZXIgMQ0wCwYDVQQDEwRjc2MgMSQwIgYJKoZIhvcNAQkBFhVjc2NAb2NlYW4t
cGlvbmVlci5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM7Med/m+csR
SxjaV4eyDGxhE7I7qH6U+4uzXZHF0VJPBHz9hBVBwME+xn3O9jq1WwiXcA1MC3dY
gro2DcUzGMVVpNIdqv8F2LAZflMdIVKrnao3JYcc9qkb6Hip88+yMscV1rfDMrIr
anJs7elo/ycHLikS4fFRb8lG5XhUT9KdAgMBAAGjggEEMIIBADAdBgNVHQ4EFgQU
37RpA3w6o8ouk0esVSOLT+ZCGV8wgdAGA1UdIwSByDCBxYAU37RpA3w6o8ouk0es
VSOLT+ZCGV+hgamkgaYwgaMxCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZUYWl3YW4x
DzANBgNVBAcTBlRhaXBlaTEpMCcGA1UEChMgT2NlYW4gUGlvbmVlciBTaGlwcGlu
ZyBjby4sIEx0ZC4xEjAQBgNVBAsTCWNvbXB1dGVyIDENMAsGA1UEAxMEY3NjIDEk
MCIGCSqGSIb3DQEJARYVY3NjQG9jZWFuLXBpb25lZXIuY29tggEAMAwGA1UdEwQF
MAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAemDSwyynWncO2MgfDsR0mZpZ9vb1z+VN
lsl4c7JGAvLzbnH8l/V2DTou6+MhHcQq6pcYHXao3X8kqFwjNDK24+6HaqWAs3rl
/HDsEgahSjTUaQpBmwoZ14JkZ+o/5C1Y8c+3ONeVfH1nrm8DgnkbrH8Mux0cp/Ds
/pDXgZxJr1M=
-----END CERTIFICATE-----
¦b«Ø¥ßCA®É»Ý­n¿é¤Jªº­«­n°Ñ¼Æ

1.Common Name
2.Email Address
3.Organizational Unit Name
4.Organization Name
5.Locality name
6.State or Province name
7.Country Name
Issuer¬OñÃÒªº³æ¦ì
Subject ¬O¤W­z¸ê®Æ


¾ÌÃÒªº©µ¦ù
¤@¯ëªº¾ÌÃҨ䣬O¥H¯Â¤å¦rªº¤è¦¡¥X²{¦Ó¬O¥H¤U­±:
.CER-DER½s½Xªº¾ÌÃÒ,¦³®É¬O´`§Çªº
.DER-DER½s½Xªº¾ÌÃÒ
.PEM-Base64½s½X¨Ï¥Î-----BEGIN CERTIFICATE-----,©M-----END CERTIFICATE-----",
.P7B
.P7C



¢Ñ¢Ï¡]¾ÌÃÒÅçÃÒ¤¤¤ß¡^
¥Ñ¤W§Ú­Ì±oª¾¾ÌÃÒ¬O¥Î¨Ó¨úªº«H¥ôªº­«­n¸ê®Æ¡A¦ý¬O¦p¦ó¿ë»{¾ÌÃÒªº¯u°°©O¡H
­º¥ý§Ú­Ì¦³´X­Ó³Ì°ª(root)¾ÌÃÒ¤¤¤ß¬O§Ú­Ì«H¥ô
¤Z¬O¸g¥Ñ¨äñÃÒªº¾ÌÃÒ³£¬O¥i¥H«H¥ôªº¡AµM¦Ó¾ÌÃÒ¬O¥Hª÷¦r¶ð«¬¦Ü¦h¨â¼hªºÃ±ÃÒ
root ca±ÂÅvca¥i¥Hñµo¾ÌÃÒ
¦ÓÅçÃÒ¾ÌÃÒ¥ý¦V¢Ñ¢ÏÅçÃÒ¡A¦pªG¤£»{±o¡A¥u­nroot CA»{±o´N¦n
¡­¦pªG§AºÞ²z¤@­Óºô°ì¨Ï¥Î¦Û¤vªºÃ±ÃÒx.509 ¡A¤]¤@¼Ë­n¦Û¤v«Ø¥ß®Ú¨pÆ_¡A¤Î®Ú¾ÌÃÒ,µM«á¥i¥H´À¦Û¤vªº¥D¾÷ñÃÒ
¡­¦pªG¥Ñ¨ä¥¦ªº(°Ó·~/§K¶O)¾ÌÃÒ¤¤¤ß©Òñµo¾ÌÃÒ¡A§A­n·Ç³Æ¾ÌÃÒ­n¨Dµ¹§Aªº¾ÌÃÒ¤¤¤ß¡A¦b¸Ó¾ÌÃÒ¤¤¤ßñÃÒ¤§«á·|°eµ¹§A¤@­Ó¾ÌÃÒÃÒ®Ñ,·íµM¤j³¡¥÷·|¥Ñroot ¾ÌÃÒ¤¤¤ß´£¨Ñ§A¤G­Ó¥²­nªº¸ê®Æ¨pÆ_/¾ÌÃÒ,¦ý§A­n´£¨Ñ¾ÌÃÒªº¬ÛÃöÄæ¦ì¸ê°T

¥Ñ¤W±oª¾¾ðª¬ªº¶¡



SSL /TLS
SSL¡]Secure Sockets Layer)/¬ONetscape ©Òµo©ú¤@ªººØ³s½u¦w¥þªº¾÷¨î¡A«á¨Ó²£¥Í¤F·sTLS(Transport Layer Security) ¡A¨ä®t§O¦p¤U¡G
1.SSL¬O¥þµ{¨Ï¥Î¡A¦pªG­ì¨Ó¨Ï¥Î«D½s½Xªº³s½u¡A­Y­n¶i¤J½s½Xªº³s½u¡A­n¥Ñ¥t¤@­Óport³s½u¶i¤J
2.TLS¬O¦b¦P¤@­Ó³s½u¤¤¥i¥H¨Ï¥Î±Ò°ÊTLSªºÃöÁä¦r¶i¤J,¦P¼Ë¥i¥H°h¥X¬°¤@¯ëªº³s½u
¦]¦¹¨Ï¥Îsslªºdaemon­n¨Ï¥Î¥t¤@­Óport¨Óµ¥«Ý§O¤H¨Ó³s½u¡A¦Ótls¬O¨Ï¥Î­ì¨Óªºport

¨Ï¥ÎSSL¨ó©w
https: 443
pop3s:995
imaps:993
¨Ï¥ÎTLS¨ó©w¡A¥i¦b­ìport¥æ½Í,¤£¥Î¤Á´«¡A¦ýµ{¦¡¥²¶·­n¤ä´©
pop3:110¡Ð¦h¤FSTLS©R¥O
imap:143 ¡Ð¦h¤FSTARTTLS©R¥O
smtp:25¡Ð¦h¤FSTARTTLS©R¥O

#ª©¥»
SSL 2.0 -°ò¥»¤W¤w¸g¼o±ó¤F
SSL 3.0 -¦n¹³¤£¬Û®eSSL 2.0
TLS 1.0 -©MSSL3.0 «D±`Ãþ¦ü
¨S¦³SSL 1.0ªºª©¥»,¦Ó¥B¦Uª©¥»¬O¤£¦P²Õ´©Ò©wªº



­«ÂI»¡©ú
1.redhatªºopensslÀÉ®× ©Ò¦b,/usr/share/ssl¬O¨ä©Ò¦b¥Ø¿ý
2.¨pÆ_¬O¥i¥H¦Û¤v²£¥Íªº(openssl),¤]¥i¥H§O¤H´£¨Ñ,¤@¯ë¨Ï¥ÎªÌ
3.¾ÌÃÒ­n¨D,¦b§A¨ú±o¾ÌÃÒ«á¥i¥H§R°£,¥¦°ß¤@ªº¥Î³B¬O¥Î¨Ó­n¨D¾ÌÃÒ
4.³Ì­«­nªº¨â­Ó¸ê®Æ,¨pÆ_/¾ÌÃÒ§A­n«OºÞ¦n

¥H¤W¬O¥Ñ¨pÆ_¨ì¾ÌÃÒªº¶¶§Ç
1.«Ø¥ß¨pÆ_(private key)
2.«Ø¥ß¾ÌÃÒ­n¨D(ca request)
3.CAñÃÒ¾ÌÃÒ(ca)

¦pªG§AºÞ¤@­Óºô°ì
1.«Ø¥ßºô°ì¨pÆ_
2.«Ø¥ß¾ÌÃÒ­n¨D



¨pÆ_ªº¤j¤p
512/1024/2048......


openssl©R¥O¹ê§@
¤F¸Ñ¤FSSLªºÆ[©À¤§«á,¥H¤U§Ú­Ì­n¹ê§@¨pÆ_/¾ÌÃÒ­n¨D/x509¾ÌÃÒ
¨pÆ_
¾ÌÃÒ(¦Û¤vñµo/§O¤Hñµo)
¥H¤U¤¶²Ð¦p¦ó¹ê§@,¨ä¹ê§@ªk¨S¦³¤@©w¨BÆJ,¦³¨Ç¨BÆJ¬O¥i¥H¦b¨Ö¦b¦P¤@¦æ©R¥O,¦]¦¹Åý¤H²£¥Í§x´b,µLªk±oª¾¨BÆJ¶¶§Ç,¨Ò¦p:¦³ªº¤¶²Ð¥ý²£¥Í¨pÆ_,¦A²£¥Í¾ÌÃÒ ­n¨D,¦³ªº±N¨ä¦X¨Ö¦b¦P¤@©R¥O,¦]¦¹¡C


man genrsa (²£¥Í¨pÆ_)
man gendsa (¦P¤W)
man req («Ø¥ß¾ÌÃÒ­n¨D/¾ÌÃÒ²£¥Í¤u¨ã)
man ca
man x509
¤W­z¤G­Ómanual¤ñman openssl¦³§ó¦h¸ê®Æ
1.²£¥Í¨pÆ_
¬O¨Ï¥Î®É¶¡ÀH¾÷²£¥Í,keyªºªø«×>64bit,¹w³]¬O1024,¬°¤F¦w¥þªº½t¬G¨Ï¥Îªøªº¤ñ¸û¦n¦p2048
openssl genrsa -des3
openssl gendsa
§A¥i¥H¨Ï¥Îopenssl°õ¦æ©R¥O¤@¨Ö²£¥Í¨pÆ_,¨Ï¥Î-keyout


2.²£¥Í¾ÌÃÒ­n¨D
¨Ï¥Îopenssl req ©R¥O,¥i²£¥Í PKCS#10 (Public-Key Cryptography Standards [PKCS]) ¾ÌÃÒ­n¨D. ¥¦¤]·|²£¥Í¤@¹ïÆ_°Í¨Ï¥Î "-new"  ¦Ü©ó¦³®Ä®É¶¡«h¬O¨Ï¥Î "-days",openssl·|´£¥Ü§A¿é¤J¤@­Ó±K½Xµ¹·s«Øªº¨pÆ_ , µM«á¾ÌÃÒ­n¨ä¥¦ªº¬ÛÃö¸ê®Æ:
openssl req -new -keyout newkey.pem -out newreq.pem  -days 360\
-config /usr/share/ssl/openssl.cnf

Generating a 1024 bit RSA private key
..............++++++
.++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

You are about to be asked to enter information that will be incorperated
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) [DE]:
State or Province Name (full name) []:
Locality Name (eg, city) [Dummsdorf]:
Organization Name (eg, company) [PSEUDONYM.ORG]:
Organizational Unit Name (eg, section) [pseudonym.org]:
Common Name (eg, YOUR name) [www.pseudonym.org]:
Email Address []:hirntod@www.pseudonym.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
¾ÌÃÒ­n¨D«Ø¥ß¦b newreq.pem (¦p¤U,¨äÀɮ׫e«á¦³µù¸Ñ):
Sample Certificate Request
-----BEGIN CERTIFICATE REQUEST-----
MIIBXTCCAQcCAQAwgaMxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTESMBAGA1UE
...
Aty7AlcmN9XNwxUk1w0H3hk=
-----END CERTIFICATE REQUEST-----
¨pÆ_«Ø¥ß¦b newkey.pemÀɮפ¤:
Sample Private Key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,21F13B37A796482C

XIY0c7gnv0BpVKkOqXIiqpyONx8xqW67wghzDlKyoOZt9NDcl9wF9jnddODwv9ZU
...
QxS2zwfKG1u+YqS1c2v5ecBgqW78DQLvxMkpYU8+xge7vDeoYKE14w==
-----END RSA PRIVATE KEY-----

Signing the Certificate Request

¦øªA¾¹ªº¾ÌÃҨϥΠOpenSSL "ca" ©R¥O¨ÓñÃÒ,¦Ó "-policy" ¥Î¨Ó¤Á´« OpenSSLªºÀô¹ÒÀÉ, distinguished name fields ¬O¥²­nªº, ¦ÓÄæ¦ìªº¶¶§Ç. ¦p½d¨Ò¤¤,§Ú­ÌªºÀô¹ÒÀɦb "policy_anything"³o¤@¸`¤¤©Ò¦³ªº¥Øªº¦WºÙªºÄæ¦ì³£¤£¬O¥²­nªº.

·í©R¥O°õ¦æ®É¥¦´£¥Ü¾ÌÃÒ authority password:

Signing a Certificate Request to Create Server Certificate
cat newreq.pem newkey.pem > new.pem
openssl ca -policy policy_anything -out newcert.pem \
-config /usr/share/ssl/openssl.cnf -infiles new.pem

Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'DE'
stateOrProvinceName :PRINTABLE:''
localityName :PRINTABLE:'Dummsdorf'
organizationName :PRINTABLE:'PSEUDONYM.ORG'
organizationalUnitName:PRINTABLE:'pseudonym.org'
commonName :PRINTABLE:'www.pseudonym.org'
emailAddress :IA5STRING:'hirntod@www.pseudonym.org'
Certificate is to be certified until May 12 15:39:33 1998 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
The server certificate is created in the file newcert.pem and is as follows (line-breaks added for issuer and subject):
Sample Server Certificate
 issuer :/C=DE/SP=/L=Dummsdorf/O=PSEUDONYM.ORG/OU=pseudonym.org/
CN=www.pseudonym.org CA/Email=hirntod@www.pseudonym.org
subject :/C=DE/SP=/L=Dummsdorf/O=PSEUDONYM.ORG/OU=pseudonym.org/
CN=www.pseudonym.org CA/Email=hirntod@www.pseudonym.org
serial :01

Certificate:
Data:
Version: 0 (0x0)
Serial Number: 1 (0x1)
Signature Algorithm: md5withRSAEncryption
Issuer: C=DE, SP=, L=Dummsdorf, O=PSEUDONYM.ORG,
OU=pseudonym.org,
CN=www CA/Email=hirntod@www.pseudonym.org
Validity
Not Before: May 12 15:39:33 1997 GMT
Not After : May 12 15:39:33 1998 GMT
Subject: C=DE, SP=, L=Dummsdorf, O=PSEUDONYM.ORG,
OU=pseudonym.org,
CN=www.pseudonym.org/Email=hirntod@www.pseudonym.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Modulus:
00:a1:41:0b:0c:15:53:a5:a5:c4:37:a8:48:f5:79:
39:9f:18:2d:f4:bf:43:34:36:21:23:03:48:a5:65:
cb:e2:f8:97:af:9c:7d:df:1e:9b:54:e2:ad:21:e3:
41:3e:54:9a:ce:dc:66:4d:61:59:fb:83:11:36:bf:
9c:3b:47:20:fb
Exponent: 65537 (0x10001)
Signature Algorithm: md5withRSAEncryption
63:77:e7:f8:aa:0b:90:5e:13:9e:4b:57:f1:0f:22:f9:4c:e3:
7a:aa:ff:a7:8a:2e:3c:1c:a2:92:07:bc:9f:22:3f:2f:13:3f:
60:62:57:a7:74:12:35:28:82:b1:00:2a:36:54:de:67:cd:a2:
9e:24:3e:98:be:14:4e:35:b7:7f

-----BEGIN CERTIFICATE-----
MIICLTCCAdcCAQEwDQYJKoZIhvcNAQEEBQAwgZ4xCzAJBgNVBAYTAlVTMQswCQYD
...
Ij8vEz9gYlendBI1KIKxACo2VN5nzaKeJD6YvhRONbd/
-----END CERTIFICATE-----

3.²£¥Í¾ÌÃÒ




4.Åã¥Ü¾ÌÃÒ¤º®e
¯Â¤å¦r¤º®e
openssl x509 -in ¾ÌÃÒÀɦW -noout -text
Åã¥Üserial
openssl x509 -in ¾ÌÃÒÀɦW -noout -serial
Åã¥ÜDN
openssl x509 -in ¾ÌÃÒÀɦW -noout -subject
Åã¥ÜMd5 fingerprint
openssl x509 -in cert.pem -noout -fingerprint
Åã¥Üsh1 fingerprint
.

sendmail ¨Ï¥Î¤º«Øªº³]©w
°Ñ¦Ò/etc/mail/sendmail.mc¤º»¡©ú
1.cd /usr/share/ssl/certs
2.Àˬdca-bundle.crt ¬O§_¦s¦b(¹w³]¦³).sendmail.pem¬O§_¦s¦b(¹w³]¨S¦³)
3.make sendmail.pem
4.­×§ï/etc/mail/sendmail.mc,±N«e­±ªºdnl
define(`confCACERT_PATH',`/usr/share/ssl/certs')
define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
5.cd /etc/mail  ,make sendmail.mc >sendmail.cf
6.­«·s±Ò°Êsendmail

´ú¸Õ
1.¨Ï¥Îtelnet localhost 25
2. ehlo "¦WºÙ"
3.Àˬd¦^À³¬O§_§tSTARTTLS
4.¦pªG¦³¤´¦³°ÝÃD,¸ÕµÛÅܧósendmail.cf ¤¤ªºlog ±N9->15,­«½Æ1-3,µM«áÀˬd/var/log/maillog