# This certificate was generated with the following command:
# openssl req -x509 -newkey rsa:2048 -nodes -keyout webkit-httpd.pem -out cert.pem
# Just press enter for all questions asked by the tool.
# Then: cat cert.pem >> webkit-httpd.pem
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAFswRGXs5cbQG
XhWngKVy3dX4rQ2BgWR4BRYLqB5blZ6o/B5Fl1r2UxK04E+JmomS3FE12Ex4c4nP
7pHQHLlo5g9MkPiRp1cuVeGAETVLAOYC/bsnnpfk3s9jtZw2iFGYZ2qKxJzlahGi
pIExDsWTh8cq+S3gsc2vDxWDa7xcAgMXpbNiXDOTZMFd0GyC7xsqk4DvuirOsBzg
yM87Vvu3axslf3Ie3GqHSjFcONOioLl7LTiquKGYuLwE/UAXsTd1fmcVdMHMinBx
nifQDWCWjsWiElXYAuWJmaA7LH3RbVe2jFXjx6UIFSDuw/y/e/70+2e0OWshGSGL
V+0FFMclAgMBAAECggEBAIVcTnlgs4iCRHZXQ7lzO2qwUSnBG6tZ5iLdhRy6r7jt
+6VexLWUC3cQ3d/uC8qBHBp2E3vKm+zUak2OWHWgO6l0cBK8Y5bcE078GP8M828L
RKW2+wTauqIPfvS+1aGWqu+gfPuy3Sr5pRzCEV+53bo7fi97qDpjt2Vel5USa0eE
ei0E+O7I3PEV4QM7YfGUa69ehjNSX1j0uXbXPpZR5h5ZKxwDcyq1vzS+p9jDgeDG
FcytmRI0vwNJTIIxMMSoGy2IrQ2/7qliHH14bRKTmnqNjc82eszhIpBitg83vJP/
OdTcTMi4OsFMW4fhtGs05QvMKMArIcWdISgbF+nYAAECgYEA3yTL3Y6PJehB8R49
YXuG4C55l9Uv9O1u4IzMjv7UYQtuZfJYiuF5y89uDnKkFpFQcd0kqmLIJ7sSMHvd
xn3fjxqPdiOvU/BvDAoIEAHBMEVSNGTQ9myz79qMtfZJYNf+EWz6NbJ06qmTHJLo
LrDyvE/JAhg96ck1iEA+DuB/8AECgYEA3F9sFmWgYaupBkFZn/zFcOi76zV0Bwy8
K2gIpLbv9LcE0vfKY0clwR12NKZn3sd+606GX8kn2u6M6ZbGM5kvFDE7Q+iVWucb
m1IFWImKHjAyxoFmftcntpejNy6Yu9HTezKDYBo/04tSQXW7pJLzfB7VEERBtiMT
KOqeW4QHFyUCgYEAxURRWceasydVjGRwXQqIHQ3Y/qpAICX63FZ8zHlppXUmnseV
EQnt04jIQcuFVlIWrOKUdHCpg740gVovoDdM+MTBSO6ZI/qtIRaJNCVo9VSDLMBn
n0JP/F3YAVD+Y7fu6tbNh8UA6ScKX7tbuVNC88kQ6WIm8dOoGJC6jApZ8AECgYEA
07Gmt20wwCKS4DtuyU2crXYk7zIOH6eQK3JouzIxGDeoHrGCbhQupHCU2MbyCQRD
W++3DdTCwIFgRBRembqRiygv8nA+6XARCQelswOM9qr+W8p6l2Y/9Bt+4seUWPib
20EPCwasQZ8YiWF7vACefaFws4ueREU1ZpzbOrZ9yTECgYBgU0HrQ0IdH590yFNx
fdTT0YRhXj/I0pwNjlhqrlGcaPWyBXo4tHa4KyNVAYsQ/k7v+q2vj4JDOMvjbdRb
LgC1n/5nGROPcWzP2UdZfOZNW8ouM3dkYv8RBnqqp/1tu2IFUT1OZ2q+3geO16J+
2IAg9na5hFPjLvd6P13IYwIx2Q==
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDYTCCAkmgAwIBAgIUDwYaHSl8CfvfUBCL+sKLp+JaKwkwDQYJKoZIhvcNAQEL
BQAwQDELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxHDAaBgNVBAoM
E1dlYktpdCBMYXlvdXQgVGVzdHMwHhcNMTgxMTAxMTY0NTI5WhcNMTgxMjAxMTY0
NTI5WjBAMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEcMBoGA1UE
CgwTV2ViS2l0IExheW91dCBUZXN0czCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAMAWzBEZezlxtAZeFaeApXLd1fitDYGBZHgFFguoHluVnqj8HkWXWvZT
ErTgT4maiZLcUTXYTHhzic/ukdAcuWjmD0yQ+JGnVy5V4YARNUsA5gL9uyeel+Te
z2O1nDaIUZhnaorEnOVqEaKkgTEOxZOHxyr5LeCxza8PFYNrvFwCAxels2JcM5Nk
wV3QbILvGyqTgO+6Ks6wHODIzztW+7drGyV/ch7caodKMVw406KguXstOKq4oZi4
vAT9QBexN3V+ZxV0wcyKcHGeJ9ANYJaOxaISVdgC5YmZoDssfdFtV7aMVePHpQgV
IO7D/L97/vT7Z7Q5ayEZIYtX7QUUxyUCAwEAAaNTMFEwHQYDVR0OBBYEFE732I6m
H3yYkbUSK198Ri+BqNM6MB8GA1UdIwQYMBaAFE732I6mH3yYkbUSK198Ri+BqNM6
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAKaYZ9RJ6K6DmArW
qtHl7jccwhte30Bnz/pVlBNcfmFbn9HIp191NOQUmAGtYtjTJ9AHNJosf1PDD9on
GYaglnzf9MYySQ5vWWd567CKoGPzV92QU/suswNHJUb9WM0D5wtBoyGMCpWQvUCS
lMqAGvkO73rMIxMX3bUEypCmz32bnXvq2LzAHKu3OchYnKspWJz9Tm3nba7LG14v
JhXJj1LLIALuSBzQUmB6gzVcdrw2QGIoxWTYvlv6mwwTZZcHSCkPvAXmQLMnC2Wk
DwFLjVpUjizFxeG8+rNgp7TiGcW7FGvfguNiviYjXSopKSp6UmNHuZDYVEV7FPAA
lKSO9Y0=
-----END CERTIFICATE-----
