Changeset 92bb2db


Ignore:
Timestamp:
Nov 24, 2015 5:18:26 PM (5 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
8d7edaae
Parents:
5c4189ab
Message:

Block CNNIC roots also.
Only log once.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/crypto/KeyStoreUtil.java

    r5c4189ab r92bb2db  
    3333public class KeyStoreUtil {
    3434       
     35    public static boolean _blacklistLogged;
     36
    3537    public static final String DEFAULT_KEYSTORE_PASSWORD = "changeit";
    3638    private static final String DEFAULT_KEY_ALGORITHM = "RSA";
     
    4244     */
    4345    private static final BigInteger[] BLACKLIST_SERIAL = new BigInteger[] {
     46        // CNNIC https://googleonlinesecurity.blogspot.com/2015/03/maintaining-digital-certificate-security.html
     47        new BigInteger("49:33:00:01".replace(":", ""), 16),
     48        // CNNIC EV root https://bugzilla.mozilla.org/show_bug.cgi?id=607208
     49        new BigInteger("48:9f:00:01".replace(":", ""), 16),
    4450        // Superfish http://blog.erratasec.com/2015/02/extracting-superfish-certificate.html
    4551        new BigInteger("d2:fc:13:87:a9:44:dc:e7".replace(":", ""), 16),
     
    5561     */
    5662    private static final String[] BLACKLIST_ISSUER_CN = new String[] {
     63        "CNNIC ROOT",
     64        "China Internet Network Information Center EV Certificates Root",
    5765        "Superfish, Inc.",
    5866        "eDellRoot"
     
    242250                                if (BLACKLIST_ISSUER_CN[i].equals(name)) {
    243251                                    ks.deleteEntry(alias);
    244                                     warn("Ignoring blacklisted certificate \"" + alias +
    245                                          "\" issued by: \"" + name +
    246                                          "\" s/n: " + serial.toString(16), null);
    247252                                    count++;
     253                                    if (!_blacklistLogged) {
     254                                        // should this be a logAlways?
     255                                        warn("Ignoring blacklisted certificate \"" + alias +
     256                                             "\" issued by: \"" + name +
     257                                             "\" s/n: " + serial.toString(16), null);
     258                                    }
    248259                                }
    249260                            }
     
    253264            }
    254265        } catch (GeneralSecurityException e) {}
     266        if (count > 0)
     267            _blacklistLogged = true;
    255268        return count;
    256269    }
     
    279292                    if (alias.endsWith(".crt") || alias.endsWith(".pem") || alias.endsWith(".key") ||
    280293                        alias.endsWith(".der") || alias.endsWith(".key") || alias.endsWith(".p7b") ||
    281                         alias.endsWith(".p7c") || alias.endsWith(".pfx") || alias.endsWith(".p12"))
     294                        alias.endsWith(".p7c") || alias.endsWith(".pfx") || alias.endsWith(".p12") ||
     295                        alias.endsWith(".cer"))
    282296                        alias = alias.substring(0, alias.length() - 4);
    283297                    boolean success = addCert(f, alias, ks);
     
    606620                        if (count > 0) {
    607621                            // rerun blacklist as a test
     622                            _blacklistLogged = false;
    608623                            count = removeBlacklistedCerts(ks);
    609624                            if (count > 0)
Note: See TracChangeset for help on using the changeset viewer.