diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
index 1898b1d80e86d97d81f3ee3bf449f8792a4b9e85..4e1a626a7767940857519ddb149e8b4757c2fa56 100644
--- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java
+++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
@@ -32,6 +32,8 @@ import net.i2p.util.SystemVersion;
  */
 public class KeyStoreUtil {
         
+    public static boolean _blacklistLogged;
+
     public static final String DEFAULT_KEYSTORE_PASSWORD = "changeit";
     private static final String DEFAULT_KEY_ALGORITHM = "RSA";
     private static final int DEFAULT_KEY_SIZE = 2048;
@@ -41,6 +43,10 @@ public class KeyStoreUtil {
      *  No reports of these in a Java keystore but just to be safe...
      */
     private static final BigInteger[] BLACKLIST_SERIAL = new BigInteger[] {
+        // CNNIC https://googleonlinesecurity.blogspot.com/2015/03/maintaining-digital-certificate-security.html
+        new BigInteger("49:33:00:01".replace(":", ""), 16),
+        // CNNIC EV root https://bugzilla.mozilla.org/show_bug.cgi?id=607208
+        new BigInteger("48:9f:00:01".replace(":", ""), 16),
         // Superfish http://blog.erratasec.com/2015/02/extracting-superfish-certificate.html
         new BigInteger("d2:fc:13:87:a9:44:dc:e7".replace(":", ""), 16),
         // eDellRoot https://www.reddit.com/r/technology/comments/3twmfv/dell_ships_laptops_with_rogue_root_ca_exactly/
@@ -54,6 +60,8 @@ public class KeyStoreUtil {
      *  to blacklist a cert without an issuer CN.
      */
     private static final String[] BLACKLIST_ISSUER_CN = new String[] {
+        "CNNIC ROOT",
+        "China Internet Network Information Center EV Certificates Root",
         "Superfish, Inc.",
         "eDellRoot"
     };
@@ -241,10 +249,13 @@ public class KeyStoreUtil {
                                 String name = CertUtil.getIssuerValue(xc, "CN");
                                 if (BLACKLIST_ISSUER_CN[i].equals(name)) {
                                     ks.deleteEntry(alias);
-                                    warn("Ignoring blacklisted certificate \"" + alias +
-                                         "\" issued by: \"" + name +
-                                         "\" s/n: " + serial.toString(16), null);
                                     count++;
+                                    if (!_blacklistLogged) {
+                                        // should this be a logAlways?
+                                        warn("Ignoring blacklisted certificate \"" + alias +
+                                             "\" issued by: \"" + name +
+                                             "\" s/n: " + serial.toString(16), null);
+                                    }
                                 }
                             }
                         }
@@ -252,6 +263,8 @@ public class KeyStoreUtil {
                 }
             }
         } catch (GeneralSecurityException e) {}
+        if (count > 0)
+            _blacklistLogged = true;
         return count;
     }
 
@@ -278,7 +291,8 @@ public class KeyStoreUtil {
                     String alias = f.getName().toLowerCase(Locale.US);
                     if (alias.endsWith(".crt") || alias.endsWith(".pem") || alias.endsWith(".key") ||
                         alias.endsWith(".der") || alias.endsWith(".key") || alias.endsWith(".p7b") ||
-                        alias.endsWith(".p7c") || alias.endsWith(".pfx") || alias.endsWith(".p12"))
+                        alias.endsWith(".p7c") || alias.endsWith(".pfx") || alias.endsWith(".p12") ||
+                        alias.endsWith(".cer"))
                         alias = alias.substring(0, alias.length() - 4);
                     boolean success = addCert(f, alias, ks);
                     if (success)
@@ -605,6 +619,7 @@ public class KeyStoreUtil {
                         System.out.println("Found " + count + " certs in " + ksf);
                         if (count > 0) {
                             // rerun blacklist as a test
+                            _blacklistLogged = false;
                             count = removeBlacklistedCerts(ks);
                             if (count > 0)
                                 System.out.println("Found " + count + " blacklisted certs in " + ksf);