I wrote a patch for pyOpenSSL to allow generation of PKCS12 files like this :

p12 = crypto.PKCS12()
p12.set_privatekey(pkey)
p12.set_certificate(cert)
open("test.p12", "w").write(crypto.dump_pkcs12(p12, "my_passphrase"))