code: public void setSubject(String subjectDN) throws IOException {
          if (subjectDN == null) {
              subject = null;
          } else {
              subject = new X500Name(subjectDN).asX500Principal();
          }
      }
docs: <strong>Denigrated</strong>, use {@linkplain #setSubject(X500Principal)}
  or {@linkplain #setSubject(byte[])} instead. This method should not be
  relied on as it can fail to match some certificates because of a loss of
  encoding information in the RFC 2253 String form of some distinguished
  names.
  <p>
  Sets the subject criterion. The specified distinguished name
  must match the subject distinguished name in the
  {@code X509Certificate}. If {@code null}, any subject
  distinguished name will do.
  <p>
  If {@code subjectDN} is not {@code null}, it should contain a
  distinguished name, in RFC 2253 format.
  
  @param subjectDN a distinguished name in RFC 2253 format
  (or {@code null})
  @throws IOException if a parsing error occurs (incorrect form for DN)