ÕÒÂÛÎÄÍø > ¼ÆËã»úÂÛÎÄ > ¼ÆËã»úÀíÂÛ >

ÓÃOPENSSLʵÏÖµç×ÓÉÌÎñÖеÄCAÈÏÖ¤(1)

ÕªÒª£º±¾ÎÄÖ÷Òª½éÉÜÁËʹÓù«¿ªÔ´´úÂëµÄ¹¤¾ßOpenSSLÀ´Íê³ÉÊý×ÖÖ¤ÊéµÄÇ©Êð£¬ÊµÏÖ µç×Ó ÉÌÎñÖеÄCAÈÏÖ¤µÄ¹ý³Ì¡£

¹Ø¼ü´Ê£ºµç×ÓÉÌÎñ£»OpenSSL£»CAÈÏÖ¤

1. ǰÑÔ
×÷Ϊµç×ÓÉÌÎñµÄ°²È«ºËÐÄSSLЭÒéÔÚµç×ÓÉÌÎñ°²È«ÐÔ·½Ãæ°çÑÝÁËÖØÒªµÄ½ÇÉ«¡£±¾ÎľÍÊÇ´Ó°²È«¼¼Êõ½Ç¶È½éÉÜÁËÒÔ¹«¿ªÔ´´úÂëµÄ¹¤¾ßOpenSSLÀ´ÊµÏÖµç×ÓÉÌÎñÖеݲȫÈÏÖ¤¹ý³Ì¡£

2. SSL£¨Secure Socket Layer£©Ð­Òé¼°ÆäÖ÷Òª¼¼Êõ
1996ÄêÓÉÃÀ¹úNetscape¹«Ë¾¿ª·¢ºÍ³«µ¼µÄSSLЭÒ飬ËüÊÇ Ä¿Ç° °²È«µç×ÓÉÌÎñ½»Ò×ÖÐʹÓÃ×î¶àµÄЭÒéÖ®Ò»,Ëü±»Ðí¶àÊÀ½çÖªÃû³§É̵ÄIntranetºÍInternet ÍøÂç ²úÆ·ËùÖ§³Ö¡£
SSL Ó¦Óà ÔÚClientºÍServer¼ä°²È«µÄWeb HTTPͨÐÅ£¬URLÒÔhttps¿ªÊ¼Ìæ´úhttp,²¢Ê¹ÓÃ443¶Ë¿Ú½øÐÐͨÐÅ¡£ËüÖ÷ҪʹÓüÓÃÜ»úÖÆ¡¢Êý×ÖÇ©Ãû¡¢Êý×ÖÕªÒª¡¢Éí·ÝÈÏÖ¤¡¢CAÈÏÖ¤¼¼ÊõÌṩClientºÍServerÖ®¼äµÄÃØÃÜÐÔ¡¢ÍêÕûÐÔ¡¢ÈÏÖ¤ÐÔÈýÖÖ»ù±¾µÄ°²È«·þÎñ¡£

3. ÓÃOpenSSL¹¤¾ßʵÏÖ°²È«ÈÏÖ¤
Ŀǰ£¬¹úÍâÖ÷Á÷µÄµç×ÓÉÌÎñ°²È«Ð­ÒéÔÚºËÐÄÃÜÂëËã·¨É϶¼Óгö¿ÚÏÞÖÆ£¬ÈçÖ»ÔÊÐí40λ»ò56λµÄRC4ºÍ512λµÄRSAËã·¨³ö¿ÚµÈ¡£ÕâÑùµÄË㷨ǿ¶ÈÒý½øºóÎÞ·¨Âú×ãÎÒ¹úµç×ÓÉÌÎñʵ¼ÊÓ¦Óõ±ÖеݲȫÐèÇó¡£µ«ÊÇ£¬ÍêÈ«×ÔÖ÷¶¨ÒåºÍ¿ª·¢Ò»Ì×°²È«±ê×¼Ìåϵ²»ÊÇÒ»õí¶ø¾ÍµÄÊÂÇ飬ÐèÒªÈË¡¢²Æ¡¢ÎïµÄ³¤ÆÚͶÈë¡£
Òò´Ë£¬ÈçºÎ¶Ô¹úÍâÖ÷Á÷µÄµç×ÓÉÌÎñ°²È«Ð­ÒéµÄ°²È«Ä£¿é½øÐиÄÔ죬ÓùúÄÚÏȽøµÄÃÜÂëËã·¨Ìæ»»ÆäÏàÓ¦µÄ°²È«Ç¿¶È²»¹»µÄËã·¨£¬±äΪ¹ú²úµÄÇ¿°²È«Ð­Ò飬ÕâÑù¾ÍÄܽϺõØÌá¸ßÎÒ¹úµç×ÓÉÌÎñ°²È«¼¼Êõˮƽ¡£
ÔÚSSLδÌṩԴ´úÂëµÄÇé¿öÏ£¬ÓɰĴóÀûÑÇÈí¼þ¹¤³ÌʦEric YoungÓëTim HudsonÁªºÏ¿ª·¢µÄOpenSSLÇ¡ºÃ½â¾öÁËÕâÒ»ÄÑÌâ¡£Ëü²»½öÄÜʵÏÖSSLµÄËùÓй¦ÄÜ£¬Ö§³ÖĿǰËùÓлùÓÚSSL V2/V3ºÍTSL V1µÄÓ¦ÓÃÈí¼þ£¬¶øÇÒÓÉÓÚÔ´´úÂ빫¿ªºÍÌṩÁ˸÷ÖÖ¼ÓÃÜËã·¨£¬ÍêÈ«¿ÉÒÔÂú×ã¹úÍⰲȫЭÒéÒý½øºóµÄ±¾µØ»¯¸ÄÔìÐèÇó¡£
ÏÂÃæ¾ÍÓÃOpenSSLÌṩµÄÇ¿´ó¹¦ÄÜÔÚFreeBSDƽ̨ϽøÐÐÊÖ¹¤Ç©ÊðÖ¤ÊéµÄ¹ý³Ì¡£
¢Å ÏȽ¨Á¢Ò»¸ö CA µÄÖ¤Ê飬Ê×ÏÈΪ CA ´´½¨Ò»¸ö RSA ˽ÓÃÃÜÔ¿£º
# OpenSSL genrsa -des3 -out ca.key 1024
¸ÃÖ¸ÁîÖÐgenras±íʾÉú³ÉRSA˽ÓÐÃÜÔ¿Îļþ¡£
-des3±íʾÓÃDES3¼ÓÃܸÃÎļþ¡£
-out ca.key±íʾÉú³ÉÎļþca.key¡£
1024ÊÇÎÒÃǵÄRSA keyµÄ³¤¶È¡£
Éú³Éserver.keyµÄʱºò»áÒªÄãÊäÈëÒ»¸öÃÜÂ룬Õâ¸öÃÜÔ¿ÓÃÀ´±£»¤ÄãµÄca.keyÎļþ£¬ÕâÑù¼´Ê¹È˼Ò͵×ßÄãµÄca.keyÎļþ£¬Ò²´ò²»¿ª£¬Äò»µ½ÄãµÄ˽ÓÐÃÜÔ¿¡£
ÔËÐиÃÖ¸ÁîºóϵͳÌáʾÊäÈë PEM pass phrase£¬Ò²¾ÍÊÇca.keyÎļþµÄ¼ÓÃÜÃÜÂ룬ÕâÀïÉèΪ12345678¡£
¢Æ ÓÃÏÂÁÐÃüÁî²é¿´ËüµÄ ÄÚÈÝ £º
#  OpenSSL rsa -noout -text -in ca.key
¸ÃÖ¸ÁîÖÐrsa±íʾ¶ÔRSA˽ÓÐÃÜÔ¿µÄ´¦Àí¡£
-noout±íʾ²»´òÓ¡³ökeyµÄ±àÂë°æ±¾ÐÅÏ¢¡£
-text±íʾ´òÓ¡³ö˽ÓÐÃÜÔ¿µÄ¸÷¸ö×é³É²¿·Ö¡£
-in ca.key ±íʾ¶Ôca.keyÎļþµÄ´¦Àí
 
¶ÔRSAËã·¨½øÐÐ ·ÖÎö ¿ÉÒÔÖªµÀ£¬RSAµÄ˽ÓÐÃÜÔ¿Æäʵ¾ÍÊÇÈý¸öÊý×Ö£¬ÆäÖÐÁ½¸öÊÇÖÊÊýprime numbers¡£²úÉúRSA˽ÓÐÃÜÔ¿µÄ¹Ø¼ü¾ÍÊDzúÉúÕâÁ½¸öÖÊÊý¡£»¹ÓÐһЩÆäËûµÄ²ÎÊý£¬Òýµ¼×ÅÕû¸ö˽ÓÐÃÜÔ¿²úÉúµÄ¹ý³Ì¡£
¢Ç ÀûÓà CA µÄ RSA ÃÜÔ¿´´½¨Ò»¸ö×ÔÇ©ÊðµÄ CA Ö¤Êé
#  OpenSSL req -new -x509 -days 365 -key ca.key -out ca.crt
¸ÃÖ¸ÁîÖÐreqÓÃÀ´´´½¨ºÍ´¦ÀíCAÖ¤Êé,Ëü»¹Äܹ»½¨Á¢×ÔÇ©ÃûÖ¤Êé,×öRoot CA¡£
-new ²úÉúÒ»¸öеÄCSR, Ëü»áÒªÊäÈë´´½¨Ö¤ÊéÇëÇóCSRµÄһЩ±ØÐëµÄÐÅÏ¢¡£
-x509 ½«²úÉú×ÔÇ©ÃûµÄÖ¤Ê飬һ°ãÓÃÀ´×ö²âÊÔÓ㬻òÕß×Ô¼º×ö¸öRoot CAÓá£
-days 365 Ö¸¶¨ÎÒÃÇ×Ô¼ºµÄCA¸øÈ˼Òǩ֤ÊéµÄÓÐЧÆÚΪ365Ìì¡£
-key ca.keyÖ¸Ã÷ÎÒÃǵÄ˽ÓÐÃÜÔ¿ÎļþÃûΪca.key¡£
-out ca.crtÖ¸³öÊä³öµÄÎļþÃûΪca.crt¡£
Ö´ÐиÃÖ¸ÁîʱϵͳҪÇóÓû§ÊäÈëһЩÓû§µÄÐÅÏ¢£¬ÈçÏÂËùʾ£º£¨¿òÄÚΪÊäÈëµÄÄÚÈÝ£©
Using configuration from /etc/ssl/OpenSSL.cnf
Enter PEM pass phrase:12345678
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
The re 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) [AU]:CN      £¨Á½¸ö×ÖĸµÄ¹ú¼Ò´úºÅ£©
State or Province Name (full name) [Some-State]:JIANG SU      £¨Ê¡·ÝÃû³Æ£©
Locality Name (eg, city) []:ZHANGJIAGANG            £¨³ÇÊÐÃû³Æ£©
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FAMILY NETWORK      £¨¹«Ë¾Ãû³Æ£©
Organizational Unit Name (eg, section) []:HOME            £¨²¿ÃÅÃû³Æ£©
Common Name (eg, YOUR name) []:TJL      £¨ÄãµÄÐÕÃû£©
Email Address []:TJL@WX88.NET      £¨EmailµØÖ·£©
¢È ÓÃÏÂÁÐÃüÁî²é¿´Éú³ÉÖ¤ÊéµÄÄÚÈÝ£º
# OpenSSL x509 -noout -text -in ca.crt
¸ÃÖ¸ÁîÖÐx509±íʾ֤Êé´¦Àí¹¤¾ß¡£
-noout±íʾ²»´òÓ¡³ökeyµÄ±àÂë°æ±¾ÐÅÏ¢¡£
-text ±íʾÒÔÎı¾·½Ê½ÏÔʾÄÚÈÝ¡£
-in ca.crt ±íʾ¶Ôca.crtÎļþ½øÐд¦Àí
ϵͳÏÔʾ֤ÊéÄÚÈÝΪ£º
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 0 (0x0)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NE
       Validity
            Not Before: Feb 24 14:49:27 2003 GMT
            Not After : Feb 21 14:49:27 2013 GMT
        Subject: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NET
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:da:20:09:11:19:1f:12:f0:98:0c:fc:91:ac:3e:
                    ¡­¡­
                    22:e1:ca:04:0f:dc:e9:bd:9f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6
            X509v3 Authority Key Identifier:
                keyid:03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6
                DirName:/C=CN/ST=JIANG SU/L=ZHANGJIAGANG/O=FAMILY NETWORK/OU=HOME/CN=TJL/Email=TJL@WX88.NET
                serial:00

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: md5WithRSAEncryption
        8d:e8:46:82:40:b4:18:a2:12:9f:7a:66:e5:fc:0c:3f:77:5a:
        ¡­¡­
        04:13
´ÓÉÏÃæµÄÊä³öÄÚÈÝ¿ÉÒÔ¿´³öÕâ¸öÖ¤Êé»ù±¾°üº¬ÁËX.509Êý×ÖÖ¤ÊéµÄÄÚÈÝ£¬´Ó·¢ÐÐÕßIssuerºÍ½ÓÊÜÕßSubjectµÄÐÅÏ¢Ò²¿ÉÒÔ¿´³öÊǸö×ÔÇ©ÊðµÄÖ¤Êé¡£
ÏÂÃæ´´½¨·þÎñÆ÷Ö¤ÊéÇ©ÊðÇëÇó£¨Ê¹ÓÃÖ¸ÁîºÍϵͳÏÔʾÐÅÏ¢»ù±¾ºÍÒÔÉÏÀàËÆ£©£º
¢É Ê×ÏÈΪApache ´´½¨Ò»¸ö RSA ˽ÓÃÃÜÔ¿£º
# OpenSSL genrsa -des3 -out server.key 1024
ÕâÀïÒ²ÒªÉ趨¿ÚÁîpass phrase£¬Éú³É server.key Îļþ¡£
¢Ê ÓÃÏÂÁÐÃüÁî²é¿´ËüµÄÄÚÈÝ£º
# OpenSSL rsa -noout -text -in server.key
¢Ë Óà server.key Éú³ÉÖ¤ÊéÇ©ÊðÇëÇó CSR£º
# OpenSSL req -new -key server.key -out server.csr
ÕâÀïÒ²ÒªÊäÈëһЩÇëÇóÖ¤ÊéµÄÐÅÏ¢£¬ºÍÉÏÃæµÄÄÚÈÝÀàËÆ¡£
¢Ì Éú³ÉÖ¤ÊéÇëÇóºó£¬ÏÂÃæ¿ÉÒÔÇ©ÊðÖ¤ÊéÁË£¬ÐèÒªÓõ½OpenSSLÔ´´úÂëÖеÄÒ»¸ö½Å±¾ sign.sh£¬Ç©Êðºó¾Í¿ÉÒԵõ½Êý×ÖÖ¤Êéserver.crt¡£
# sign.sh server.csr
¢Í Æô¶¯°²È«Web·þÎñ
×îºóÔÚapache·þÎñÆ÷ÖнøÐÐcaÈÏÖ¤ÉèÖ㬿½±´server.crt ºÍserver.keyµ½/usr/local/apache/conf
ÐÞ¸Ähttpd.conf ½«ÏÂÃæµÄ²ÎÊý¸ÄΪ£º
SSLCertificateFILE /usr/local/apache/conf/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/server.key
¿ÉÒÔÆô¶¯´ø°²È«Á¬½ÓµÄApacheÊÔÒ»ÏÂÁË¡£
# /usr/local/apache/bin/apachectl startssl
ÌáʾÊäÈëpass phrase£¨¾ÍÊÇÇ°ÃæÎª·þÎñÆ÷ÉèÖõĿÚÁ
¢Î ½øÐа²È«Á¬½Ó
ͨ¹ýÁíһ̨µçÄÔ£¨IPµØÖ·Îª192.168.0.1£©µÄIEä¯ÀÀÆ÷ÓëÕą̂Apache·þÎñÆ÷£¨IPµØÖ·Îª192.168.0.2£©Á¬½Ó²¢ÇÒÑ¡ÔñhttpsЭÒ飬¼´£ºhttps://192.168.0.2:443¡£³öÏÖ°²È«Á¬½Ó¾¯¸æ´°¿Ú£¬ÒòΪÎҵķþÎñÆ÷Ö¤ÊéÊÇ×Ô¼ºÊÖ¹¤Ç©ÊðµÄ£¬²»ÊǾ­¹ýÕæÕýµÄCA°ä·¢µÄÖ¤Ê飬ÊǸöÎÞЧ֤Ê飬ËùÒÔ°´È·¶¨ºó³öÏÖ°²È«Ö¤ÊéÎÞЧµÄ¾¯¸æ´°¿Ú¡£°´¡°ÊÇ¡±¼ÌÐø£¬³öÏÖÈçͼ1Ëùʾ£º
×¢ÒâÕâÀïä¯ÀÀÆ÷µØÖ·À¸ÄÚÊäÈëµÄÊÇhttps¶ø²»ÊÇhttp£¬ÁíÍâ´ËʱÔÚ״̬À¸ÄÚ³öÏÖÁËÒ»°ÑÐ¡Ëø£¬Õâ˵Ã÷SSLЭÒéÆð×÷ÓÃÁË£¬·þÎñÆ÷ºÍä¯ÀÀÆ÷Ö®¼ä½¨Á¢ÁËÒ»¸ö°²È«Á¬½ÓÕâÑùÎÒÃÇʹÓÿª·ÅÔ´´úÂëµÄ¹¤¾ßOpenSSLÀ´Íê³ÉÁ˵ç×ÓÉÌÎñµÄCAÈÏÖ¤¹ý³Ì£¬Í¬Ê±ÕâÒ²Ö»ÊÇʹÓÃÏֳɵŤ¾ßÀ´Íê³ÉµÄ£¬ÔÚʵ¼ÊʹÓÃÖл¹Òª·ÖÎöËüµÄÔ´´úÂ룬ÐÞ¸ÄÔ´´úÂ룬À´´ïµ½×Ô¼ºµÄ°²È«ÐèÒª¡£

4£®½áÊøÓï
SSLÊÇĿǰ¹ú¼ÊÉÏÁ÷ÐÐWeb°²È«¹¤¾ß£¬ËüÈÚºÏÁ˶àÖÖ°²È«¼¼Êõ£¬ÊµÏÖ°²È«µÄWebͨÐÅ£¬±Ø½«ÔÚ¹úÄڵݲȫµç×Ó½»Ò×ÁìÓòµÃµ½¹ã·ºµÄÓ¦Óá£Í¨¹ý¶Ô¹«¿ªÔ´´úÂëµÄ¹¤¾ßOpenSSLµÄʹÓúͷÖÎö£¬¿ÉÒÔʹÎÒÃǶÔSSLЭÒéÓкܺõÄÀí½âºÍÓ¦Óã¬¶Ô Ñо¿ µç×ÓÉÌÎñÖеݲȫ ÎÊÌâ ÓоßÓÐÌØ±ðµÄ ÀíÂÛ ¼ÛÖµºÍʵÓüÛÖµ¡£

¹²2Ò³: 1 [2] ÏÂÒ»Ò³


Ò»ÖÖʵÏÖǶÈëʽLinuxµÄз½·¨
ÓÃsshÈ¡´úTelneʵÏÖ°²È«Á¬½Ó
¹¤É̹ÜÀí | ¹¤¿ÆÂÛÎÄ | ²ÆÎñ¹ÜÀí | ¹ÜÀíѧ | ¹«¹²¹ÜÀí | ²ÆÕþ˰ÊÕ | ֤ȯ½ðÈÚ | »á¼ÆÉó¼Æ | ¼ÆËã»ú | ·¨ÂÉÂÛÎÄ | ҽҩѧ | ººÓïÑÔÎÄѧ
Éç»áÂÛÎÄ | ¹¤¿ÆÂÛÎÄ | Àí¿ÆÂÛÎÄ | ÎÄ»¯ÂÛÎÄ | ÒÕÊõÂÛÎÄ | ÎÄѧÂÛÎÄ | ÕÜѧÂÛÎÄ | ÕþÖÎÂÛÎÄ | Ó¢ÓïÂÛÎÄ | д×÷Ö¸µ¼ | ¼ÆËã»úÓ¦ÓÃ
www.zlunwen.com ÕÒÂÛÎÄÍø ® °æÈ¨ËùÓÐ ÍøÕ¾µØÍ¼