[Python-Dev] Other SSL issues in the tracker have been marked

Guido van Rossum guido at python.org
Mon Aug 27 19:20:17 CEST 2007


Committed revision 57561.


On 8/27/07, Bill Janssen <janssen at parc.com> wrote:
> > Regardless, building a fixed test certificate and checking it in sounds like
> > the better option.  Then the openssl command in the test code can be turned
> > into a comment describing how the test data was pregenerated.
>
> Here's a patch that does that.
>
> Bill
>
> Index: Lib/test/keycert.pem
> ===================================================================
> --- Lib/test/keycert.pem        (revision 0)
> +++ Lib/test/keycert.pem        (revision 0)
> @@ -0,0 +1,32 @@
> +-----BEGIN RSA PRIVATE KEY-----
> +MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L
> +opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH
> +fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB
> +AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU
> +D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA
> +IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM
> +oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0
> +ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/
> +loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j
> +oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA
> +z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq
> +ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV
> +q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU=
> +-----END RSA PRIVATE KEY-----
> +-----BEGIN CERTIFICATE-----
> +MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD
> +VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x
> +IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT
> +U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1
> +NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl
> +bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m
> +dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj
> +aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh
> +m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8
> +M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn
> +fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC
> +AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb
> +08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx
> +CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/
> +iHkC6gGdBJhogs4=
> +-----END CERTIFICATE-----
> Index: Lib/test/test_ssl.py
> ===================================================================
> --- Lib/test/test_ssl.py        (revision 57559)
> +++ Lib/test/test_ssl.py        (working copy)
> @@ -22,7 +22,6 @@
>      skip_expected = True
>
>  CERTFILE = None
> -GMAIL_POP_CERTFILE = None
>
>
>  def handle_error(prefix):
> @@ -298,12 +297,15 @@
>  nsCertType = server
>  """
>
> -def create_cert_files():
> +def create_cert_files(hostname=None):
>
> +    """This is the routine that was run to create the certificate
> +    and private key contained in keycert.pem."""
> +
>      import tempfile, socket, os
>      d = tempfile.mkdtemp()
>      # now create a configuration file for the CA signing cert
> -    fqdn = socket.getfqdn()
> +    fqdn = hostname or socket.getfqdn()
>      crtfile = os.path.join(d, "cert.pem")
>      conffile = os.path.join(d, "ca.conf")
>      fp = open(conffile, "w")
> @@ -316,7 +318,7 @@
>                })
>      fp.close()
>      error = os.system(
> -        "openssl req -batch -new -x509 -days 10 -nodes -config %s "
> +        "openssl req -batch -new -x509 -days 2000 -nodes -config %s "
>          "-keyout \"%s\" -out \"%s\" > /dev/null < /dev/null 2>&1" %
>          (conffile, crtfile, crtfile))
>      # now we have a self-signed server cert in crtfile
> @@ -324,7 +326,8 @@
>      if (os.WEXITSTATUS(error) or
>          not os.path.exists(crtfile) or os.path.getsize(crtfile) == 0):
>          if test_support.verbose:
> -            sys.stdout.write("Unable to create certificate for test %d\n" % error)
> +            sys.stdout.write("Unable to create certificate for test, "
> +                             + "error status %d\n" % (error >> 8))
>          crtfile = None
>      elif test_support.verbose:
>          sys.stdout.write(open(crtfile, 'r').read() + '\n')
> @@ -336,7 +339,8 @@
>          raise test_support.TestSkipped("socket module has no ssl support")
>
>      global CERTFILE
> -    tdir, CERTFILE = create_cert_files()
> +    CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
> +                            "keycert.pem")
>      if not CERTFILE:
>          sys.__stdout__.write("Skipping test_ssl ConnectedTests; "
>                               "couldn't create a certificate.\n")
> @@ -362,8 +366,6 @@
>              # wait for it to stop
>              server.join()
>
> -    if tdir and os.path.isdir(tdir):
> -        shutil.rmtree(tdir)
>      test_support.threading_cleanup(*thread_info)
>
>  if __name__ == "__main__":
>


-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list