momo zone

调核人的blog

linux 下安全证书管理

linux 下使用安全证书相对比较麻烦,不同的安全套件,没有gui配置界面……

其实使用安全证书对我而言也就是网上银行而已。 firefox 和chrome是我用过的两款浏览器,就在这两个平台上搞吧。

首先要安装这些包:

mozilla-nss                         | Network Security Services
mozilla-nss-certs              | CA certificates for NSS
mozilla-nss-devel              | Network (Netscape) Security Services development files
mozilla-nss-tools              | Tools for developing, debugging, and managing applications that use NSS

没错,都是mozilla基金的东西,但不用担心,chrome也使用他们而没有重新发明轮子。

1.首先创建一个nss数据库:

certutil -N -d ~/.pki/nssdb     #之所以是这个路径是因为firefox和chrome都默认从这里找证书

-N表示新建安全数据库,-d指定数据文件目录,执行完毕后出现3个数据库文件:

cert8.db ,key3.db, secmod.db

2.导入CA 证书:

curl -k -o "cacert-root.crt"   "http://www.cacert.org/certs/root.crt"
curl -k -o "cacert-class3.crt" "http://www.cacert.org/certs/class3.crt"
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org" -i cacert-root.crt
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org Class 3" -i cacert-class3.crt

-A表示新增,-t 表示导入证书的类型,后面详解。-n 表示证书别名(在-L 选项中显示和在浏览器看到),-i表示证书文件的路径。

certutil -d sql:$HOME/.pki/nssdb -A -t TC -n “CA-Name” -i /path/to/file

3.显示所有已导入证书:

certutil -L -d sql:/root/.pki/nssdb/
Certificate Nickname                                         Trust Attributes
SSL,S/MIME,JAR/XPI
le-e70c91a0-461d-45e9-b3e2-1b038274c136                      u,u,u
CAcert.org                                                   CT,,
CAcert.org Class 3                                           CT,,
ABC                                                          CT,C,C
http://www.95599.cn                                                 CT,,
alibaba_ca                                                   CT,C,C
alibaba_user_ca                                              CT,C,C
alibaba_mechine_ca                                           CT,C,C
{D7EC8906-1E2A-425F-A3F8-C0E55FF8DFAF}                       u,u,u

左列是别名,右边是信任属性:

p    Valid peer
P    Trusted peer (implies p)
c    Valid CA
T    Trusted CA to issue client certs (implies c)
C    Trusted CA to issue server certs(for ssl only) (implies c)
u    User cert
w    Send warning

4. 查看某个证书详细信息:

certutil -L -d sql:/root/.pki/nssdb/ -n ABC  #用-n指定别名就行

Certificate:
Data:
Version: 3 (0x2)
Serial Number:
7b:97:ca:10:27:5a:00:00:00:01
Signature Algorithm: PKCS #1 SHA-1 With RSA Encryption
Issuer: “O=ABC,CN=ABC”
Validity:
Not Before: Mon Aug 11 05:38:49 2003
Not After : Fri Aug 11 05:38:49 2023
Subject: “O=ABC,CN=ABC”
Subject Public Key Info:
Public Key Algorithm: PKCS #1 RSA Encryption
RSA Public Key:
Modulus:
ff:fd:2e:56:6d:e2:d4:4c:48:2e:23:c7:e2:10:b2:96:
54:5e:a0:3e:cf:97:cc:0e:b1:fd:81:8b:98:33:93:5a:
96:20:e9:0e:b1:5d:31:0c:5a:68:a2:5e:a8:6d:77:39:
9c:59:77:d5:56:a9:20:f6:d1:0a:19:89:68:d4:7f:4d:
7b:74:20:ca:0f:0c:c7:d7:31:6a:18:27:32:97:6a:92:
0a:30:63:96:68:c0:5b:00:c2:79:58:a6:f7:1b:b9:06:
5a:a7:df:09:24:5e:a5:2d:45:90:85:5f:e8:e8:c9:a5:
c4:dc:04:74:2c:ea:5f:9a:36:4e:60:f1:3e:bd:45:d5
Exponent: 65537 (0x10001)
Signed Extensions:
5.删除指定证书:
certutil -D -n <the name> -d sql:$HOME/.pki/nssdb
6.导入个人证书和私钥:
这类证书主要是实名认证和网银的个人证书:
pk12util -d sql:$HOME/.pki/nssdb -i PrivateKey.pfx

PS: 获得证书的方法除了通过chrome export 外,也可以用以下的脚本做到:
#!/bin/sh
#
# usage:  import-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}
exec 6>&1
exec > $REMHOST
echo | openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "$REMHOST" -i $REMHOST 
exec 1>&6 6>&-

了解了上述内容是不是要准备把CNNIC的根证书和其他流氓机构颁发的证书全都清理掉呢?
别急,其实上述certutil工具是完全无法移除这些流氓证书的。不信,你用certutil是查看不到这些流氓的。原因是certutil只能对用户自己导入的证书做管理(e.g 就是$HOME/.pki/nssdb这里),而无法管理系统自带的证书。在chrome等浏览器里面可以看到这些系统自带证书,但也无法管理。那么系统自带的证书在哪里?

其实系统自带的证书就是mozilla-nss-certs这个包里的证书:
#rpm -ql mozilla-nss-certs
/usr/lib64/libnssckbi.so
不过这里无法这接去对它做删除,因为他是打包成了动态连接库的形式,只能去下载mozilla-nss的源码包修改后再编译。具体方法如下:

去http://www.mozilla.org/projects/security/pki/nss/下载源码或去下载发行版的SRPM

解压并编辑文件:

nss/lib/ckfw/builtins/certdata.txt

将下面的内容完全删除然后在编译即可(过程很漫长~~);

#
# Certificate "CNNIC ROOT"
#
CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
CKA_TOKEN CK_BBOOL CK_TRUE
CKA_PRIVATE CK_BBOOL CK_FALSE
CKA_MODIFIABLE CK_BBOOL CK_FALSE
CKA_LABEL UTF8 "CNNIC ROOT"
CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
CKA_SUBJECT MULTILINE_OCTAL
6062611360110603\12504062302\103\11661
1660140603\12504122305\103\116\116\111\10361
2360210603\12504032312\103\116\116\111\10340
\122\117\117\124
END
CKA_ID UTF8 "0"
CKA_ISSUER MULTILINE_OCTAL
6062611360110603\12504062302\103\11661
1660140603\12504122305\103\116\116\111\10361
2360210603\12504032312\103\116\116\111\10340
\122\117\117\124
END
CKA_SERIAL_NUMBER MULTILINE_OCTAL
0204\111630001
END
CKA_VALUE MULTILINE_OCTAL
60\20203\12560\2020275\240030201020204\111
6300016015061152\206\110\206\36715010105
05006062611360110603\12504062302\103
\116611660140603\12504122305\103\116\116\111
\103612360210603\12504032312\103\116\116\111
\10340\122\117\117\12460362715606760646166
606760716164\132271562676064616660
6760716164\1326062611360110603\12504
062302\103\116611660140603\12504122305
\103\116\116\111\103612360210603\12504032312
\103\116\116\111\10340\122\117\117\12460\20201426015
061152\206\110\206\36715010101050003\20201
170060\202011202\202010100\32365\36777\163
\167\255\350\133\16327\302\321\157\355\125\274\156\352\350\244
\171\262\154\303\243\357\341\237\26173\110\205\365\232\13441
422054\305\202\316\332\343\232\15667\341\20754\334\271
14\132\272\210\125\337\375\252\3333761\35201\361\33771
01\30123\375\110\12241\304\125\337\332\330\263\124\166\272
\164\261\267\175\327\300\350\366\131\305\115\310\275\2553724
\332\337\130\10445623152\307\176\176\216\25670\26060
\173\107\1621161\36060\333\30333\16651\273\151\166\116
\127\37133\144\242\223\126\267\157\231\156\3331204\23421
\343\20037\313\143\2242012\251\341\144\20261\371\21447
\355\246\23100\366\160\22330\370\24164\206\243\335\172\302
30\171\366\172\14565\317\220\353\27563\223\237\123\253\163
73\346\23364405735\357\25135\14332\240\200\33303
57\3714632\206\322\215\273\251\276\12272\207\147\11015
\277\264\240\33046\27643\137\16367\17746\346\22204\243
\177\31740\247\267\36372\312\313\231\3130203010001
\243\16360\16160210611\140\206\11001\206\370\10201
0104040302000760370603\12535430430
6026\20024\145\36261\25552\367\367\335\122\22612\307
02\30116\357\246\325732160170603\125352301
01\377040560030101\37760130603\1253517
0404030201\37660350603\1253516042604
24\145\36261\25552\367\367\335\122\22612\30702\30116
\357\246\32573216015061152\206\110\206\3671501
0105050003\202010100\11365\356\314\344\256\277
\303\156\255\237\22573\11377\13336\337\12751\242\131\312
70\342\27132\377\236\346\15662\33536\256\35265\267\365
\223\221\116\332\102\341\30327\140\120\362\321\13446\271\202
\267\352\155\344\234\204\34703\17127\257\23075\224\333\307
\27200\347\270\27701\127\301\167\105621473\361\26434
10\260\375\121\240\241\335\232352366\232\155\267\30774
\271\341\305\33127\372\203\3257525\24074\2733613\342
\310\22077\250\20614\374\371\213\136\205\313\117\133\113\142
21\107\305\105\1740557\101\261\23620\15133\231\226\340
\125\171\373\116\206\231\270\224\332\20670\152\223\243\347\313
\156\345\337\35241\125\211\234\175\175\177\230\36500\211\356
\343\204\300\134\226\265\305\106\352\106\340\205\125\26633\311
22\326\301\315\315\200\363020174\310\151\313\105\110\143
\330\224\320\354\2051673\11621\145\364\202\214\24675\256
5642\22411\310\134\35274\201\135265203\22726\125
11\333\212\101\202\236\146\23321
END

# Trust for Certificate "CNNIC ROOT"
CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
CKA_TOKEN CK_BBOOL CK_TRUE
CKA_PRIVATE CK_BBOOL CK_FALSE
CKA_MODIFIABLE CK_BBOOL CK_FALSE
CKA_LABEL UTF8 "CNNIC ROOT"
CKA_CERT_SHA1_HASH MULTILINE_OCTAL
\213\257\114\23335\36052\222\367\33222\216\27133\254\364
\230\140\113\157
END
CKA_CERT_MD5_HASH MULTILINE_OCTAL
41\274\202\253\111\3042373\113\26253\134\153\220\23431
END
CKA_ISSUER MULTILINE_OCTAL
6062611360110603\12504062302\103\11661
1660140603\12504122305\103\116\116\111\10361
2360210603\12504032312\103\116\116\111\10340
\122\117\117\124
END
CKA_SERIAL_NUMBER MULTILINE_OCTAL
0204\111630001
END
CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE

#
# Certificate "China Internet Network Information Center EV Certificates Root"
#
# Issuer: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN
# Serial Number: 1218379777 (0x489f0001)
# Subject: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN
# Not Valid Before: Tue Aug 31 07:11:25 2010
# Not Valid After : Sat Aug 31 07:11:25 2030
# Fingerprint (MD5): 55:5D:63:00:97:BD:6A:97:F5:67:AB:4B:FB:6E:63:15
# Fingerprint (SHA1): 4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E
CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
CKA_TOKEN CK_BBOOL CK_TRUE
CKA_PRIVATE CK_BBOOL CK_FALSE
CKA_MODIFIABLE CK_BBOOL CK_FALSE
CKA_LABEL UTF8 "China Internet Network Information Center EV Certificates Root"
CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
CKA_SUBJECT MULTILINE_OCTAL
60\201\212611360110603\12504062302\103\116
616260600603\12504121451\103\150\151\156\141
40\111\156\164\145\162\156\145\16440\116\145\164\167\157\162
\15340\111\156\146\157\162\155\141\164\151\157\15640\103\145
\156\164\145\16261\10760\1050603\12504031476\103
\150\151\156\14140\111\156\164\145\162\156\145\16440\116\145
\164\167\157\162\15340\111\156\146\157\162\155\141\164\151\157
\15640\103\145\156\164\145\16240\105\12640\103\145\162\164
\151\146\151\143\141\164\145\16340\122\157\157\164
END
CKA_ID UTF8 "0"
CKA_ISSUER MULTILINE_OCTAL
60\201\212611360110603\12504062302\103\116
616260600603\12504121451\103\150\151\156\141
40\111\156\164\145\162\156\145\16440\116\145\164\167\157\162
\15340\111\156\146\157\162\155\141\164\151\157\15640\103\145
\156\164\145\16261\10760\1050603\12504031476\103
\150\151\156\14140\111\156\164\145\162\156\145\16440\116\145
\164\167\157\162\15340\111\156\146\157\162\155\141\164\151\157
\15640\103\145\156\164\145\16240\105\12640\103\145\162\164
\151\146\151\143\141\164\145\16340\122\157\157\164
END
CKA_SERIAL_NUMBER MULTILINE_OCTAL
0204\110\2370001
END
CKA_VALUE MULTILINE_OCTAL
60\20203\36760\20202\337\240030201020204\110
\23700016015061152\206\110\206\36715010105
050060\201\212611360110603\12504062302
\103\116616260600603\12504121451\103\150\151
\156\14140\111\156\164\145\162\156\145\16440\116\145\164\167
\157\162\15340\111\156\146\157\162\155\141\164\151\157\15640
\103\145\156\164\145\16261\10760\1050603\125040314
76\103\150\151\156\14140\111\156\164\145\162\156\145\16440
\116\145\164\167\157\162\15340\111\156\146\157\162\155\141\164
\151\157\15640\103\145\156\164\145\16240\105\12640\103\145
\162\164\151\146\151\143\141\164\145\16340\122\157\157\16460
362715616060706361606761616265\132
2715636060706361606761616265\13260
\201\212611360110603\12504062302\103\11661
6260600603\12504121451\103\150\151\156\14140
\111\156\164\145\162\156\145\16440\116\145\164\167\157\162\153
40\111\156\146\157\162\155\141\164\151\157\15640\103\145\156
\164\145\16261\10760\1050603\12504031476\103\150
\151\156\14140\111\156\164\145\162\156\145\16440\116\145\164
\167\157\162\15340\111\156\146\157\162\155\141\164\151\157\156
40\103\145\156\164\145\16240\105\12640\103\145\162\164\151
\146\151\143\141\164\145\16340\122\157\157\16460\2020142
6015061152\206\110\206\36715010101050003
\20201170060\202011202\202010100\233\176\163
\356\27573\170\252\144\103\101\365\120\337\224\36256\262\215
\112\216\106\124\3224122\3107162\10206\351\203\325\237
\122\355\345\1470373\124\301\214\231\231\314\351\30017\377
15\331\20421\262\270\321\313\133\33436\371\15061\144\341
\233\372\164\353\150\27140\225\367\30617\215\107\254\13206
\335\141\253\342\354\330\2372755\234\3127465\227\125\161
\315\103\205\261\10726\36554\123\200\166\317\32300\144\275
\100\231\335\314\330\333\304\237\32623\137\101\203\213\37115
\207\222\12664\15432201327\325\13234\227\130\20474
\2043256\134\22164\15631\137\17727\151\305\145\357\153
41\306\325\12072\277\141\27105\215\357\1576472\262\157
24\143\2772673\233\25152\375\2675370\14606\30554
\342\252\14736\105\247\21504\146\102\366\21753\357\21040
\151\21762\21424\163\33253\206\221\14342\232\362\247\333
\316\211\213\253\135\30724\301\13360\15237\261\267\23656
\2010102\355\317\226\136\143\333\250\34670\267020301
0001\243\14360\14160370603\1253543043060
26\20024\174\162\11371\307\300\333\142\245\117\233\25230
64\222\242\312\203\202\13160170603\12535230101
\377040560030101\37760160603\125351701
01\37704040302010660350603\125351604
260424\174\162\11371\307\300\333\142\245\117\233\25230
64\222\242\312\203\202\1316015061152\206\110\206\367
15010105050003\20201010052\303\307\10367
\217\335\255\244\26214\356\33424\155\21750\244\230\111\313
14\200\352\363\35543\146\165\175\305\32341\147\171\321\163
\305\26503\267\130\25414\12457\306\126231761\33206
\347\1457335\15766\333\31035\371\375\20006\312\24375
\14626\250\235\11426\175\300\225\106\265\121\344\34237\327
\35206\115\143\215\226\214\357\34763\127\10272\353\214\301
\171\310\115\166\175\336\366\261\267\201\340\240\371\241\170\106
2732\126\230\360\11675\25334\355\35471\33407\110\367
\143\37606\256\302\244\134\152\13362\210\305\30763\205\254
\146\102\107\302\13044\231\341\34576\345\16554\216\103\326
\13574\17036\250\225\20251\120\321\32126\272\357\301\276
\172\331\264\330\31436\114\106\341\167\26161\253\27552\310
\316\217\156\241\135\17703\16564\344\255\211\105\124\136\276
\25650\245\27377\170\171\353\163\2631215\375\276\311\367
\126\254\366\267\35557\2334151\30770\266\225\30404\362
\30355\3752452\220\231\27107\314\237
END

# Trust for "China Internet Network Information Center EV Certificates Root"
# Issuer: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN
# Serial Number: 1218379777 (0x489f0001)
# Subject: CN=China Internet Network Information Center EV Certificates Root,O=China Internet Network Information Center,C=CN
# Not Valid Before: Tue Aug 31 07:11:25 2010
# Not Valid After : Sat Aug 31 07:11:25 2030
# Fingerprint (MD5): 55:5D:63:00:97:BD:6A:97:F5:67:AB:4B:FB:6E:63:15
# Fingerprint (SHA1): 4F:99:AA:93:FB:2B:D1:37:26:A1:99:4A:CE:7F:F0:05:F2:93:5D:1E
CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST
CKA_TOKEN CK_BBOOL CK_TRUE
CKA_PRIVATE CK_BBOOL CK_FALSE
CKA_MODIFIABLE CK_BBOOL CK_FALSE
CKA_LABEL UTF8 "China Internet Network Information Center EV Certificates Root"
CKA_CERT_SHA1_HASH MULTILINE_OCTAL
\117\231\252\223\37353\3216746\241\231\112\316\177\36005
\362\223\13536
END
CKA_CERT_MD5_HASH MULTILINE_OCTAL
\125\135\14300\227\275\152\227\365\147\253\113\373\156\14325
END
CKA_ISSUER MULTILINE_OCTAL
60\201\212611360110603\12504062302\103\116
616260600603\12504121451\103\150\151\156\141
40\111\156\164\145\162\156\145\16440\116\145\164\167\157\162
\15340\111\156\146\157\162\155\141\164\151\157\15640\103\145
\156\164\145\16261\10760\1050603\12504031476\103
\150\151\156\14140\111\156\164\145\162\156\145\16440\116\145
\164\167\157\162\15340\111\156\146\157\162\155\141\164\151\157
\15640\103\145\156\164\145\16240\105\12640\103\145\162\164
\151\146\151\143\141\164\145\16340\122\157\157\164
END
CKA_SERIAL_NUMBER MULTILINE_OCTAL
0204\110\2370001
END
CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR
CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST
CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE

另外还有个包ca-certificates-mozilla ,他主要是安装一些.pem证书文件供/etc/ssl/certs作软链接。也就是为一些命令行程序如wget,curl使用。对浏览器没有影响。

另外一个问题我曾经有个疑问,为什么mozilla会把一些过期或已吊销的证书打包进去? 后来才明白这是避免你再次将过期或吊销的证书再次安装,干脆直接把无效证书放进去占个位子,免得有其他伪造的证书来钻空子。所以过期或已吊销证书还是不要删掉吧。

update 2015/1/4:

升级opensuse13.2之后又多了一个wosign china,估计也不是什么好鸟,同样也去掉吧。另外编译srpm的时候需要mozilla-nspr-devel rpm。

Advertisements

One response to “linux 下安全证书管理

  1. Pingback: linux 下安全证书管理 | 欢迎来到Aesean!

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: