PYTHON-269 Add tests for hostname validation
This commit is contained in:
BIN
tests/integration/long/ssl/.keystore
Normal file
BIN
tests/integration/long/ssl/.keystore
Normal file
Binary file not shown.
BIN
tests/integration/long/ssl/.truststore
Normal file
BIN
tests/integration/long/ssl/.truststore
Normal file
Binary file not shown.
Binary file not shown.
19
tests/integration/long/ssl/cassandra.pem
Normal file
19
tests/integration/long/ssl/cassandra.pem
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDnzCCAoegAwIBAgIEG7jtLDANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJVUzETMBEGA1UE
|
||||||
|
CBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExFjAUBgNVBAoTDURhdGFTdGF4IElu
|
||||||
|
Yy4xGTAXBgNVBAsTEFBIUCBEcml2ZXIgVGVzdHMxEjAQBgNVBAMTCTEyNy4wLjAuMTAgFw0xNjA0
|
||||||
|
MTkxNTIzNDBaGA8yMTE2MDMyNjE1MjM0MFowfzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
|
||||||
|
b3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJbmMuMRkwFwYD
|
||||||
|
VQQLExBQSFAgRHJpdmVyIFRlc3RzMRIwEAYDVQQDEwkxMjcuMC4wLjEwggEiMA0GCSqGSIb3DQEB
|
||||||
|
AQUAA4IBDwAwggEKAoIBAQCkFMlcxnl+k5KAzt6g1GSQ/kXzHtQXcf0//x6BQTRYdOEeiBnMcI+o
|
||||||
|
HYefiwGpDslr3YxcWwJSfKjgUhGj+2wyl4O8PP0Up47tX5HUQuIlIjjBZd465VhQh6DqaJky3YHX
|
||||||
|
KD+8eHuVMnEyAImsNh9laQkUOHsGT/POpI77IBxS1hVVOu6A5bYz17D0RAzZBel3eZBWLSSgbkSG
|
||||||
|
jUPIDY+078qRJI56xY/6lEM5Zr6DJ96jTdqjRPFv3fHJJZnwCNz0ng0wB/gHYFkm2fdGAM2jrCdD
|
||||||
|
jC+VZK6uyXatRbFanPdlfZ4rWPrH7V0c6wrDssuUMlDIdaMyHC89axZLP5ZZAgMBAAGjITAfMB0G
|
||||||
|
A1UdDgQWBBR/0GR2jGRuP8rsmBept17gwXcRejANBgkqhkiG9w0BAQsFAAOCAQEAe33a2GITd7DP
|
||||||
|
WmDCFfsZqCDIbHdx1QwfcvWRpSnjXpN4Muzrt4TCRJAx6kNQZDnG2aNMdGWGjrQAXUMLkJfSnwJX
|
||||||
|
X1f3LteNfekWB/lN6kVbPy5lSuLT45q3xSLpTUE51S3zG/c+qyi3FZgYA729ieuDW8VTQdF9hClN
|
||||||
|
Ik8Wy5Gg87AdYY71DvG9IQkg9eAGVeZSnfMUDYpAiZaavsYJwFfYqIT/WCz9FNXPYN1tDNoV3u71
|
||||||
|
GTPrywMLZlmmGn3EBvbh1mR25EmPkxAw6LkWyfbbzrskhXmzN+j9TZNN9MiYMNtisWBR9afsVpLq
|
||||||
|
Bw4ukuih6CyqUxwuVBNhns8iFA==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
BIN
tests/integration/long/ssl/driver.crt
Normal file
BIN
tests/integration/long/ssl/driver.crt
Normal file
Binary file not shown.
27
tests/integration/long/ssl/driver.key
Normal file
27
tests/integration/long/ssl/driver.key
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAohKfXUHM5AQvwgTPIretqenYVJzo78z5IE/xjUe0/e24lJCe
|
||||||
|
qCYaJPHB3kjg05ZQhBWZFsPhxMwh7zvTaLiIfjK9EuDvBP+dhxLbWShXcL8NNu45
|
||||||
|
dfM4BebewR82Kk4rAMHgAaWDPjnyo4XJ+DUMlXMzbMrCT35k0R2ddwuEF/OI6dIn
|
||||||
|
AX/VVDtOaWaiCP6BC4rt9r2y1UjJ5xHAK+bPjev7Y1TrSd8maTQTFzORlVRamwpQ
|
||||||
|
tMXDJfWyan5+rbAfi74Qk6kBuc25ZWKpYKJlKGgHy9b9875G76K63boXe8hDcDE1
|
||||||
|
mJHOEReb/n533OWmtTUH2z9Wz/ZLfE7E784DtQIDAQABAoIBAEjCDXMDMCUI0BvM
|
||||||
|
puSSCs9loG1Tx6qnnQtpeCoRj+oTBzMCvYcFG+WL9pmApBW4vEqfm4tBwp/jeDR6
|
||||||
|
6gxwEy58Pq8z9XmL+z8BMyGSX7bIvfjz9y3BU1wq6cNO7LUPRHThlFuI3yNXRlss
|
||||||
|
m5/myNBq2CI14Adp2X6bSe6AZ/uL6+Ez8ZLpNiMUtGzTDILyH8bkgRHsyDxoDpF+
|
||||||
|
h1r42dZG3ue4JC3oqUE2epvNE5Rzh02OTBSYYbmOmFWkhV2lm6DH46lycFHjkzcm
|
||||||
|
2meU7q9I7nZrf0+ZkkQXhWGQWcGzHd3si+XMhaHT0BnH8gGFZDzpC/qnvZdIn//y
|
||||||
|
zDu2B/0CgYEA43kkgZ1YGqi5Vi4ngek/uk4sJ9dOvYIaAag+u5ybRinLhCFDGhr9
|
||||||
|
MzksqFY7naq9oeZZrLbftw2FsKsCMYAOrrxZIbhvGm538jwWmBefEmD0Ww+k/WKG
|
||||||
|
AAv0z4sSnSOq2/sZBQJlOrk8K6wQ+FcyEddiy16zyj9UCzEPSDQoNj8CgYEAtmXY
|
||||||
|
xYALbGz0peDGfzPq/WjeqCJtjlXIKOB7+vdyi88YE4Tea2vfBmAAWmbTf/el/o8R
|
||||||
|
txDfP6+RKxXs2jCFCY640W83ar3RjXcwtu+oH4Aqa8S21o6Dx2sx3HOgKoJ3DGGB
|
||||||
|
HHmYczuDZmN/zHseBrYUf1UNcIDQIWZCLKImkQsCgYEAuY735bfJyC18yr1pwwLX
|
||||||
|
1o2wXWu4ssSvnEx3qCmvTIQJnaZYi7IafC+Wq1d02EAQ40H6QvcG9ddVCHHnnyOc
|
||||||
|
VpQUjXpbP49/zx2PPNCAFcj7bFENwRkewGkAclE7hO40kbB6j2iN1WKHoASD72GJ
|
||||||
|
2Z3+3HFLbp9MWrjRg4/wgZcCgYAk2IgkxYwJOC1nwPN4SM2kqWWpQ2MsSKnpkAeb
|
||||||
|
mBccpRYxAztHKgBgsk3/9RuukyGGPfKPL6pZnCbQNFqnbPvDBYDSVgw01OmbEUPX
|
||||||
|
AKzOyD5JjPB+gUWfqEjnRrhJPhe8eYnybaHdTV1q9piffxN+uZOEcXMIkgz5YkXl
|
||||||
|
7E+sJwKBgFLA2CS19lbcoi5R8AJbUydZJr/LNAbFknWnliiq3GxISfWydA9cG/dI
|
||||||
|
CxV3297awLhHrCWqziC0zITjEcAhsNkfG/VQlYGJOS3sfvMSrLuW/9bAL8o4VCpC
|
||||||
|
cOs9e+svbJukJB6UQu4vpROMmv+0quXM325VlCZNel7DPAovYwjW
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
19
tests/integration/long/ssl/driver.pem
Normal file
19
tests/integration/long/ssl/driver.pem
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDnzCCAoegAwIBAgIEJErKsDANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJVUzETMBEGA1UE
|
||||||
|
CBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExFjAUBgNVBAoTDURhdGFTdGF4IElu
|
||||||
|
Yy4xGTAXBgNVBAsTEFBIUCBEcml2ZXIgVGVzdHMxEjAQBgNVBAMTCTEyNy4wLjAuMTAgFw0xNjA0
|
||||||
|
MTkxNTIzNDVaGA8yMTE2MDMyNjE1MjM0NVowfzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
|
||||||
|
b3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJbmMuMRkwFwYD
|
||||||
|
VQQLExBQSFAgRHJpdmVyIFRlc3RzMRIwEAYDVQQDEwkxMjcuMC4wLjEwggEiMA0GCSqGSIb3DQEB
|
||||||
|
AQUAA4IBDwAwggEKAoIBAQCiEp9dQczkBC/CBM8it62p6dhUnOjvzPkgT/GNR7T97biUkJ6oJhok
|
||||||
|
8cHeSODTllCEFZkWw+HEzCHvO9NouIh+Mr0S4O8E/52HEttZKFdwvw027jl18zgF5t7BHzYqTisA
|
||||||
|
weABpYM+OfKjhcn4NQyVczNsysJPfmTRHZ13C4QX84jp0icBf9VUO05pZqII/oELiu32vbLVSMnn
|
||||||
|
EcAr5s+N6/tjVOtJ3yZpNBMXM5GVVFqbClC0xcMl9bJqfn6tsB+LvhCTqQG5zbllYqlgomUoaAfL
|
||||||
|
1v3zvkbvorrduhd7yENwMTWYkc4RF5v+fnfc5aa1NQfbP1bP9kt8TsTvzgO1AgMBAAGjITAfMB0G
|
||||||
|
A1UdDgQWBBR8aJLDSgkUMcrs08BbxhRA1wJIIzANBgkqhkiG9w0BAQsFAAOCAQEAoHRggyaMKbeB
|
||||||
|
633sZgzH8DzvngzA/vID+XWAv+lCGdIYNkbu9VJ8IaYsa9JsMvvhp7UFL1mYm32QacjorxqfNTNS
|
||||||
|
To8z4VOXrGLYkuJL1M2qJjkl3ehkX8tzKXyDIgq4pVCvKkFZR0It+QU87MnHUL1/HIOy+zdNW6ZU
|
||||||
|
Q7sRCUMtqstiQ4scbispsVevfEBkGNjHIp6M/5Qe6skntRvdNMWZILz82GLym+NppTgcNcwDf7lq
|
||||||
|
g/syNznM0KAE1VUAJ2y8tArvAZ/XugC2RmZGwY3q/qw1B7kaoTqu7KSdLuWzol5gR0NNVADU5x7U
|
||||||
|
BrwBmgliT/bGpRz+PAGVYj5OXw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICbjCCAdegAwIBAgIEP/N06DANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJU
|
|
||||||
RTELMAkGA1UECBMCQ0ExFDASBgNVBAcTC1NhbnRhIENsYXJhMREwDwYDVQQKEwhE
|
|
||||||
YXRhU3RheDELMAkGA1UECxMCVEUxGDAWBgNVBAMTD1BoaWxpcCBUaG9tcHNvbjAe
|
|
||||||
Fw0xNDEwMDMxNTQ2NDdaFw0xNTAxMDExNTQ2NDdaMGoxCzAJBgNVBAYTAlRFMQsw
|
|
||||||
CQYDVQQIEwJDQTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExETAPBgNVBAoTCERhdGFT
|
|
||||||
dGF4MQswCQYDVQQLEwJURTEYMBYGA1UEAxMPUGhpbGlwIFRob21wc29uMIGfMA0G
|
|
||||||
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQChGDwrhpQR0d+NoqilMgsBlR6A2Dd1oMyI
|
|
||||||
Ue42sU4tN63g5N4adasfasdfsWgnAkP332ok3YAuVbxytwEv2K9HrUSiokAiuinl
|
|
||||||
hhHA8CXTHt/1ItzzWj9uJ3Hneb+5lOkXVTZX7Y+q3aSdpx/HnZqn4i27DtLZF0z3
|
|
||||||
LccWPWRinQIDAQABoyEwHzAdBgNVHQ4EFgQU9WJpUhgGTBBH4xZBCV7Y9YISCp4w
|
|
||||||
DQYJKoZIhvcNAQELBQADgYEAF6e8eVAjoZhfyJ+jW5mB0pXa2vr5b7VFQ45voNnc
|
|
||||||
GrB3aNbz/AWT7LCJw88+Y5SJITgwN/8o3ZY6Y3MyiqeQYGo9WxDSWb5AdZWFa03Z
|
|
||||||
+hrVDQuw1r118zIhdS4KYDCQM2JfWY32TwK0MNG/6BO876HfkDpcjCYzq8Gh0gEg
|
|
||||||
uOA=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,34 +0,0 @@
|
|||||||
Bag Attributes
|
|
||||||
friendlyName: python_driver
|
|
||||||
localKeyID: 54 69 6D 65 20 31 34 33 35 33 33 33 34 30 34 33 33 32
|
|
||||||
Key Attributes: <No Attributes>
|
|
||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
Proc-Type: 4,ENCRYPTED
|
|
||||||
DEK-Info: DES-EDE3-CBC,8A0BC9CFBBB36D47
|
|
||||||
|
|
||||||
J3Rh82LhsNdIdCV4KCp758VIJJnmedwtq/I9oxH5kY4XoUQjfNcvLGlEnbAUD6+N
|
|
||||||
mYnQ5XPDvD7iC19XvlA9gfaoWERq+zroGEP+e4dX1X5RlT6YQBJpJR8IW4DWngDM
|
|
||||||
Nv6CuaGFJWMH8QUvKlJyFOPOHBqbhsCRaxg3pOG3RyUFXpGPDV0ySUyp6poHE9KE
|
|
||||||
pEVif/SdS3AhV2sb4tyBS9sRZdH1eeCN4gY6k9PQWyNViAgUYAG5xWsE4fITa3qY
|
|
||||||
gisyzbOYU8ue2QvmjPJgieiKPQf+st/ZRV5eQUCdUgAfLEnULGJXRZ5kw7kMXL0X
|
|
||||||
gLaKFbGxv4pKQCDCZQq4GXIA/nmTy6cme+VPKwq3usm+GdxfdWQJjgG65+AFaut/
|
|
||||||
XjGm1fvSQzWuzpesfLy57HMK+bBh1/UKjuQa3wAHtgPtJLtUSW+/qBnQRdBbl20C
|
|
||||||
dJtJXyyTlX6H8bQBIfBLc4ntUwS8fVd2jsYJRpCBY6HdtpfsZZ5gQnm1Nux4ksKn
|
|
||||||
rYYx3I/JpChr7AV7Yj/lwc3Zca/VJl16CjyWeRTQEvkl6GK958aIzj73HfXleZc6
|
|
||||||
HGVfOgo2BLmOzY0ZCq/Wa4fnURRgrC3SusrT9mjVbID91oNYw4BjMEU53u0uxPC+
|
|
||||||
rr6SwG2EUVawGTVK4XZw2DINCPP/wsKqf0xqA+sxArcTN/MEdLUBdf8oDntkj2jG
|
|
||||||
Oy0kwpjqhSvWo1DqYKZjV/wKT2SS18OMAW+0qplbHw1/FDGWK+OseD8MXwBo06a5
|
|
||||||
LWRQXhf0kEXUQ+oNj3eahe/npHiNChR6mEiIbCuE3NAXPPXJNkhMuj2f5EqrOPfZ
|
|
||||||
jqbNiLfKKx7L5t6B8LXkdKGPqztcFlnB8rRF9Eqa8F4wiEg8MBLrPyxgd/uT+NIz
|
|
||||||
LdDgvUE+IkCwQoYoCU70ApiEOyQNacuSxwUiVWVyn9CJYXPM4Vlje7GDIDRR5Xp6
|
|
||||||
zNf0ktNP46PsRqDlYG9hZWndj4PRaAqtatlEEm37rmyouVBe3rxcbL1b1zsH/p1I
|
|
||||||
eaGGTyZ8+iEiuEk4gCOmfmYmpE7H/DXlQvtDRblid/bEY64Uietx0HQ5yZwXZYi8
|
|
||||||
hb4itke6xkgRQEIXVyQOdU88PEuA5yofEGoXkfdLgtdu3erPrVDc+nQTYrMWNacR
|
|
||||||
JQljfhAFJdjOw81Yd5PnFHAtxcxzqEkWv0TGQLL1VjJdinhI7q/fIPLJ76FtuGmt
|
|
||||||
zlxo/Jy1aaUgM/e485+7aoNSGi2/t6zGqGuotdUCO5epgrUHX+9fOJnnrYTG9ixp
|
|
||||||
FSHTT69y72khnw3eMP8NnOS3Lu+xLEzQHNbUDfB8uyVEX4pyA3FPVVqwIaeJDiPS
|
|
||||||
2x7Sl5KKwLbqPPKRFRC1qLsN4KcqeXBG+piTLPExdzsLbrU9JZMcaNmSmUabdg20
|
|
||||||
SCwIuU2kHEpO7O7yNGeV9m0CGFUaoCAHVG70oXHxpVjAJbtgyoBkiwSxghCxXkfW
|
|
||||||
Mg+1B2k4Gk1WrLjIyasH6p0MLUJ7qLYN+c+wF7ms00F/w04rM6zUpkgnqsazpw6F
|
|
||||||
weUhpA8qY2vOJN6rsB4byaOUnd33xhAwcY/pIAcjW7UBjNmFMB1DQg==
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDrzCCApegAwIBAgIEFPORBzANBgkqhkiG9w0BAQsFADCBhjELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJ
|
|
||||||
bmMuMRwwGgYDVQQLExNQeXRob24gRHJpdmVyIFRlc3RzMRYwFAYDVQQDEw1QeXRob24gRHJpdmVy
|
|
||||||
MCAXDTE1MDYyNTE3MDAxOFoYDzIxMTUwNjAxMTcwMDE4WjCBhjELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJ
|
|
||||||
bmMuMRwwGgYDVQQLExNQeXRob24gRHJpdmVyIFRlc3RzMRYwFAYDVQQDEw1QeXRob24gRHJpdmVy
|
|
||||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjUi6xfmieLqx9yD7HhkB6sjHfbS51xE7
|
|
||||||
aaRySjTA1p9mPfPMPPMZ0NIsiDsUlT7Fa+LWZU9cGuJBFg8YxjU5Eij7smFd0J4tawk51KudDdUZ
|
|
||||||
crALGFC3WY7sEboMl8UHqV+kESPlNm5/JSNSYkNm1TMi9mHcB/Bg3RDpORRW/keMtBSLRxCVjsu6
|
|
||||||
GvKN8wuEfU/bTmI9aUjbFRCFunBX6QEJeU44BYEJXNAls+X8szBfVmFHwefatSlh++uu7kY6zAQI
|
|
||||||
v74PHMZ8w+mWmbjpxEsmSg+uljGCjQHjKTNSFBY9kWWh2LBiTcZuEsQ9DK0J/+1tUa0s5vq6CjUK
|
|
||||||
XRxwpQIDAQABoyEwHzAdBgNVHQ4EFgQUJwTYG8dcZDt7faalYwCHmG3jp3swDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBABtg3SLFUkcbISoZO4/UdHY2z4BTJZXt5uep9qIVQu7NospzsafgyGF0YAQJq0fLhBlB
|
|
||||||
DVx6IxIvDZUfzKdIVMYJTQh7ZJ7kdsdhcRIhKZK4Lko3iOwkWS0aXsbQP+hcXrwGViYIV6+Rrmle
|
|
||||||
LuxwexVfJ+wXCJcc4vvbecVsOs2+ms1w98cUXvVS1d9KpHo37LK1mRsnYPik3+CBeYXqa8FzMJc1
|
|
||||||
dlC/dNwrCXYJZ1QMEpyaP4TI3fmkg8OJ3glZkQr6nz1TUMwMmAvudb79IrmQKBuO6k99DZFJC6Er
|
|
||||||
oh6ff8G/F5YY+dWEqsF0KqNhL9uwyrqG3CTX5Eocg2AGkWI=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDrzCCApegAwIBAgIEFPORBzANBgkqhkiG9w0BAQsFADCBhjELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJ
|
|
||||||
bmMuMRwwGgYDVQQLExNQeXRob24gRHJpdmVyIFRlc3RzMRYwFAYDVQQDEw1QeXRob24gRHJpdmVy
|
|
||||||
MCAXDTE1MDYyNTE3MDAxOFoYDzIxMTUwNjAxMTcwMDE4WjCBhjELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMRYwFAYDVQQKEw1EYXRhU3RheCBJ
|
|
||||||
bmMuMRwwGgYDVQQLExNQeXRob24gRHJpdmVyIFRlc3RzMRYwFAYDVQQDEw1QeXRob24gRHJpdmVy
|
|
||||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjUi6xfmieLqx9yD7HhkB6sjHfbS51xE7
|
|
||||||
aaRySjTA1p9mPfPMPPMZ0NIsiDsUlT7Fa+LWZU9cGuJBFg8YxjU5Eij7smFd0J4tawk51KudDdUZ
|
|
||||||
crALGFC3WY7sEboMl8UHqV+kESPlNm5/JSNSYkNm1TMi9mHcB/Bg3RDpORRW/keMtBSLRxCVjsu6
|
|
||||||
GvKN8wuEfU/bTmI9aUjbFRCFunBX6QEJeU44BYEJXNAls+X8szBfVmFHwefatSlh++uu7kY6zAQI
|
|
||||||
v74PHMZ8w+mWmbjpxEsmSg+uljGCjQHjKTNSFBY9kWWh2LBiTcZuEsQ9DK0J/+1tUa0s5vq6CjUK
|
|
||||||
XRxwpQIDAQABoyE666666gNVHQ4EFgQUJwTYG8dcZDt7faalYwCHmG3jp3swDQYJKoZIhvcNAQEL
|
|
||||||
BQADggEBABtg3SLFUkcbISoZO4/UdHY2z4BTJZXt5uep9qIVQu7NospzsafgyGF0YAQJq0fLhBlB
|
|
||||||
DVx6IxIvDZUfzKdIVMYJTQh7ZJ7kdsdhcRIhKZK4Lko3iOwkWS0aXsbQP+hcXrwGViYIV6+Rrmle
|
|
||||||
LuxwexVfJ+wXCJcc4vvbecVsOs2+ms1w98cUXvVS1d9KpHo37LK1mRsnYPik3+CBeYXqa8FzMJc1
|
|
||||||
dlC/dNwrCXYJZ1QMEpyaP4TI3fmkg8OJ3glZkQr6nz1TUMwMmAvudb79IrmQKBuO6k99DZFJC6Er
|
|
||||||
oh6ff8G/F5YY+dWEqsF0KqNhL9uwyrqG3CTX5Eocg2AGkWI=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAjUi6xfmieLqx9yD7HhkB6sjHfbS51xE7aaRySjTA1p9mPfPM
|
|
||||||
PPMZ0NIsiDsUlT7Fa+LWZU9cGuJBFg8YxjU5Eij7smFd0J4tawk51KudDdUZcrAL
|
|
||||||
GFC3WY7sEboMl8UHqV+kESPlNm5/JSNSYkNm1TMi9mHcB/Bg3RDpORRW/keMtBSL
|
|
||||||
RxCVjsu6GvKN8wuEfU/bTmI9aUjbFRCFunBX6QEJeU44BYEJXNAls+X8szBfVmFH
|
|
||||||
wefatSlh++uu7kY6zAQIv74PHMZ8w+mWmbjpxEsmSg+uljGCjQHjKTNSFBY9kWWh
|
|
||||||
2LBiTcZuEsQ9DK0J/+1tUa0s5vq6CjUKXRxwpQIDAQABAoIBAC3bpYQM+wdk0c79
|
|
||||||
DYU/aLfkY5wRxSBhn38yuUYMyWrgYjdJoslFvuNg1MODKbMnpLzX6+8GS0cOmUGn
|
|
||||||
tMrhC50xYEEOCX1lWiib3gGBkoCi4pevPGqwCFMxaL54PQ4mDc6UFJTbqdJ5Gxva
|
|
||||||
0yrB5ebdqkN+kASjqU0X6Bt21qXB6BvwAgpIXSX8r+NoH2Z9dumSYD+bOwhXo+/b
|
|
||||||
FQ1wyLL78tDdlJ8KibwnTv9RtLQbALUinMEHyP+4Gp/t/JnxlcAfvEwggYBxFR1K
|
|
||||||
5sN8dMFbMZVNqNREXZyWCMQqPbKLhIHPHlNo5pJP7cUh9iVH4QwYNIbOqUza/aUx
|
|
||||||
z7DIISECgYEAvpAAdDiBExMOELz4+ku5Uk6wmVOMnAK6El4ijOXjJsOB4FB6M0A6
|
|
||||||
THXlzLws0YLcoZ3Pm91z20rqmkv1VG+En27uKC1Dgqqd4DOQzMuPoPxzq/q2ozFH
|
|
||||||
V5U1a0tTmyynr3CFzQUJKLJs1pKKIp6HMiB48JWQc5q6ZaaomEnOiYsCgYEAvczB
|
|
||||||
Bwwf7oaZGhson1HdcYs5kUm9VkL/25dELUt6uq5AB5jjvfOYd7HatngNRCabUCgE
|
|
||||||
gcaNfJSwpbOEZ00AxKVSxGmyIP1YAlkVcSdfAPwGO6C1+V4EPHqYUW0AVHOYo7oB
|
|
||||||
0MCyLT6nSUNiHWyI7qSEwCP03SqyAKA1pDRUVI8CgYBt+bEpYYqsNW0Cn+yYlqcH
|
|
||||||
Jz6n3h3h03kLLKSH6AwlzOLhT9CWT1TV15ydgWPkLb+ize6Ip087mYq3LWsSJaHG
|
|
||||||
WUC8kxLJECo4v8mrRzdG0yr2b6SDnebsVsITf89qWGUVzLyLS4Kzp/VECCIMRK0F
|
|
||||||
ctQZFFffP8ae74WRDddSbQKBgQC7vZ9qEyo6zNUAp8Ck51t+BtNozWIFw7xGP/hm
|
|
||||||
PXUm11nqqecMa7pzG3BWcaXdtbqHrS3YGMi3ZHTfUxUzAU4zNb0LH+ndC/xURj4Z
|
|
||||||
cXJeDO01aiDWi5LxJ+snEAT1hGqF+WX2UcVtT741j/urU0KXnBDb5jU92A++4rps
|
|
||||||
tH5+LQKBgGHtOWD+ffKNw7IrVLhP16GmYoZZ05zh10d1eUa0ifgczjdAsuEH5/Aq
|
|
||||||
zK7MsDyPcQBH/pOwAcifWGEdXmn9hL6w5dn96ABfa8Qh9nXWrCE2OFD81PDU9Osd
|
|
||||||
wnwbTKlYWPBwdF7UCseKC7gXkUD6Ls0ADWJvrCI7AfQJv6jj6nnE
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICbjCCAdegAwIBAgIEP/N06DANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJURTELMAkGA1UE
|
|
||||||
CBMCQ0ExFDASBgNVBAcTC1NhbnRhIENsYXJhMREwDwYDVQQKEwhEYXRhU3RheDELMAkGA1UECxMC
|
|
||||||
VEUxGDAWBgNVBAMTD1BoaWxpcCBUaG9tcHNvbjAeFw0xNDEwMDMxNTQ2NDdaFw0xNTAxMDExNTQ2
|
|
||||||
NDdaMGoxCzAJBgNVBAYTAlRFMQswCQYDVQQIEwJDQTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExETAP
|
|
||||||
BgNVBAoTCERhdGFTdGF4MQswCQYDVQQLEwJURTEYMBYGA1UEAxMPUGhpbGlwIFRob21wc29uMIGf
|
|
||||||
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChGDwrhpQR0d+NoqilMgsBlR6A2Dd1oMyIUe42sU4t
|
|
||||||
N63g5N44Ic4RpTiyaWgnAkP332ok3YAuVbxytwEv2K9HrUSiokAiuinlhhHA8CXTHt/1ItzzWj9u
|
|
||||||
J3Hneb+5lOkXVTZX7Y+q3aSdpx/HnZqn4i27DtLZF0z3LccWPWRinQIDAQABoyEwHzAdBgNVHQ4E
|
|
||||||
FgQU9WJpUhgGTBBH4xZBCV7Y9YISCp4wDQYJKoZIhvcNAQELBQADgYEAF6e8eVAjoZhfyJ+jW5mB
|
|
||||||
0pXa2vr5b7VFQ45voNncGrB3aNbz/AWT7LCJw88+Y5SJITgwN/8o3ZY6Y3MyiqeQYGo9WxDSWb5A
|
|
||||||
dZWFa03Z+hrVDQuw1r118zIhdS4KYDCQM2JfWY32TwK0MNG/6BO876HfkDpcjCYzq8Gh0gEguOA=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -25,16 +25,16 @@ from tests.integration import use_singledc, PROTOCOL_VERSION, get_cluster, remov
|
|||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEFAULT_PASSWORD = "cassandra"
|
DEFAULT_PASSWORD = "pythondriver"
|
||||||
|
|
||||||
# Server keystore trust store locations
|
# Server keystore trust store locations
|
||||||
SERVER_KEYSTORE_PATH = "tests/integration/long/ssl/server_keystore.jks"
|
SERVER_KEYSTORE_PATH = "tests/integration/long/ssl/.keystore"
|
||||||
SERVER_TRUSTSTORE_PATH = "tests/integration/long/ssl/server_trust.jks"
|
SERVER_TRUSTSTORE_PATH = "tests/integration/long/ssl/.truststore"
|
||||||
|
|
||||||
# Client specific keys/certs
|
# Client specific keys/certs
|
||||||
CLIENT_CA_CERTS = 'tests/integration/long/ssl/driver_ca_cert.pem'
|
CLIENT_CA_CERTS = 'tests/integration/long/ssl/cassandra.pem'
|
||||||
DRIVER_KEYFILE = "tests/integration/long/ssl/python_driver_no_pass.key"
|
DRIVER_KEYFILE = "tests/integration/long/ssl/driver.key"
|
||||||
DRIVER_CERTFILE = "tests/integration/long/ssl/python_driver.pem"
|
DRIVER_CERTFILE = "tests/integration/long/ssl/driver.pem"
|
||||||
DRIVER_CERTFILE_BAD = "tests/integration/long/ssl/python_driver_bad.pem"
|
DRIVER_CERTFILE_BAD = "tests/integration/long/ssl/python_driver_bad.pem"
|
||||||
|
|
||||||
|
|
||||||
@@ -78,6 +78,38 @@ def teardown_module():
|
|||||||
remove_cluster()
|
remove_cluster()
|
||||||
|
|
||||||
|
|
||||||
|
def validate_ssl_options(ssl_options):
|
||||||
|
# find absolute path to client CA_CERTS
|
||||||
|
tries = 0
|
||||||
|
while True:
|
||||||
|
if tries > 5:
|
||||||
|
raise RuntimeError("Failed to connect to SSL cluster after 5 attempts")
|
||||||
|
try:
|
||||||
|
cluster = Cluster(protocol_version=PROTOCOL_VERSION, ssl_options=ssl_options)
|
||||||
|
session = cluster.connect()
|
||||||
|
break
|
||||||
|
except Exception:
|
||||||
|
ex_type, ex, tb = sys.exc_info()
|
||||||
|
log.warn("{0}: {1} Backtrace: {2}".format(ex_type.__name__, ex, traceback.extract_tb(tb)))
|
||||||
|
del tb
|
||||||
|
tries += 1
|
||||||
|
|
||||||
|
# attempt a few simple commands.
|
||||||
|
insert_keyspace = """CREATE KEYSPACE ssltest
|
||||||
|
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}
|
||||||
|
"""
|
||||||
|
statement = SimpleStatement(insert_keyspace)
|
||||||
|
statement.consistency_level = 3
|
||||||
|
session.execute(statement)
|
||||||
|
|
||||||
|
drop_keyspace = "DROP KEYSPACE ssltest"
|
||||||
|
statement = SimpleStatement(drop_keyspace)
|
||||||
|
statement.consistency_level = ConsistencyLevel.ANY
|
||||||
|
session.execute(statement)
|
||||||
|
|
||||||
|
cluster.shutdown()
|
||||||
|
|
||||||
|
|
||||||
class SSLConnectionTests(unittest.TestCase):
|
class SSLConnectionTests(unittest.TestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -102,36 +134,32 @@ class SSLConnectionTests(unittest.TestCase):
|
|||||||
|
|
||||||
# find absolute path to client CA_CERTS
|
# find absolute path to client CA_CERTS
|
||||||
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
||||||
|
ssl_options = {'ca_certs': abs_path_ca_cert_path,
|
||||||
|
'ssl_version': ssl.PROTOCOL_TLSv1}
|
||||||
|
validate_ssl_options(ssl_options=ssl_options)
|
||||||
|
|
||||||
tries = 0
|
def test_can_connect_with_ssl_ca_host_match(self):
|
||||||
while True:
|
"""
|
||||||
if tries > 5:
|
Test to validate that we are able to connect to a cluster using ssl, and host matching
|
||||||
raise RuntimeError("Failed to connect to SSL cluster after 5 attempts")
|
|
||||||
try:
|
|
||||||
cluster = Cluster(protocol_version=PROTOCOL_VERSION, ssl_options={'ca_certs': abs_path_ca_cert_path,
|
|
||||||
'ssl_version': ssl.PROTOCOL_TLSv1})
|
|
||||||
session = cluster.connect()
|
|
||||||
break
|
|
||||||
except Exception:
|
|
||||||
ex_type, ex, tb = sys.exc_info()
|
|
||||||
log.warn("{0}: {1} Backtrace: {2}".format(ex_type.__name__, ex, traceback.extract_tb(tb)))
|
|
||||||
del tb
|
|
||||||
tries += 1
|
|
||||||
|
|
||||||
# attempt a few simple commands.
|
test_can_connect_with_ssl_ca_host_match performs a simple sanity check to ensure that we can connect to a cluster with ssl
|
||||||
insert_keyspace = """CREATE KEYSPACE ssltest
|
authentication via simple server-side shared certificate authority. It also validates that the host ip matches what is expected
|
||||||
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}
|
|
||||||
"""
|
|
||||||
statement = SimpleStatement(insert_keyspace)
|
|
||||||
statement.consistency_level = 3
|
|
||||||
session.execute(statement)
|
|
||||||
|
|
||||||
drop_keyspace = "DROP KEYSPACE ssltest"
|
@since 3.3
|
||||||
statement = SimpleStatement(drop_keyspace)
|
@jira_ticket PYTHON-296
|
||||||
statement.consistency_level = ConsistencyLevel.ANY
|
@expected_result The client can connect via SSL and preform some basic operations, with match_hostname specified
|
||||||
session.execute(statement)
|
|
||||||
|
|
||||||
cluster.shutdown()
|
@test_category connection:ssl
|
||||||
|
"""
|
||||||
|
|
||||||
|
# find absolute path to client CA_CERTS
|
||||||
|
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
||||||
|
ssl_options = {'ca_certs': abs_path_ca_cert_path,
|
||||||
|
'ssl_version': ssl.PROTOCOL_TLSv1,
|
||||||
|
'cert_reqs': ssl.CERT_REQUIRED,
|
||||||
|
'match_hostname': True}
|
||||||
|
|
||||||
|
validate_ssl_options(ssl_options=ssl_options)
|
||||||
|
|
||||||
|
|
||||||
class SSLConnectionAuthTests(unittest.TestCase):
|
class SSLConnectionAuthTests(unittest.TestCase):
|
||||||
@@ -158,40 +186,39 @@ class SSLConnectionAuthTests(unittest.TestCase):
|
|||||||
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
||||||
abs_driver_keyfile = os.path.abspath(DRIVER_KEYFILE)
|
abs_driver_keyfile = os.path.abspath(DRIVER_KEYFILE)
|
||||||
abs_driver_certfile = os.path.abspath(DRIVER_CERTFILE)
|
abs_driver_certfile = os.path.abspath(DRIVER_CERTFILE)
|
||||||
|
ssl_options = {'ca_certs': abs_path_ca_cert_path,
|
||||||
|
'ssl_version': ssl.PROTOCOL_TLSv1,
|
||||||
|
'keyfile': abs_driver_keyfile,
|
||||||
|
'certfile': abs_driver_certfile}
|
||||||
|
validate_ssl_options(ssl_options)
|
||||||
|
|
||||||
tries = 0
|
def test_can_connect_with_ssl_client_auth_host_name(self):
|
||||||
while True:
|
"""
|
||||||
if tries > 5:
|
Test to validate that we can connect to a C* cluster that has client_auth enabled, and hostmatching
|
||||||
raise RuntimeError("Failed to connect to SSL cluster after 5 attempts")
|
|
||||||
try:
|
|
||||||
cluster = Cluster(protocol_version=PROTOCOL_VERSION, ssl_options={'ca_certs': abs_path_ca_cert_path,
|
|
||||||
'ssl_version': ssl.PROTOCOL_TLSv1,
|
|
||||||
'keyfile': abs_driver_keyfile,
|
|
||||||
'certfile': abs_driver_certfile})
|
|
||||||
|
|
||||||
session = cluster.connect()
|
This test will setup and use a c* cluster that has client authentication enabled. It will then attempt
|
||||||
break
|
to connect using valid client keys, and certs (that are in the server's truststore), and attempt to preform some
|
||||||
except Exception:
|
basic operations, with match_hostname specified
|
||||||
ex_type, ex, tb = sys.exc_info()
|
@jira_ticket PYTHON-296
|
||||||
log.warn("{0}: {1} Backtrace: {2}".format(ex_type.__name__, ex, traceback.extract_tb(tb)))
|
@since 3.3
|
||||||
del tb
|
|
||||||
tries += 1
|
|
||||||
|
|
||||||
# attempt a few simple commands.
|
@expected_result The client can connect via SSL and preform some basic operations
|
||||||
|
|
||||||
insert_keyspace = """CREATE KEYSPACE ssltest
|
@test_category connection:ssl
|
||||||
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'}
|
"""
|
||||||
"""
|
|
||||||
statement = SimpleStatement(insert_keyspace)
|
|
||||||
statement.consistency_level = 3
|
|
||||||
session.execute(statement)
|
|
||||||
|
|
||||||
drop_keyspace = "DROP KEYSPACE ssltest"
|
# Need to get absolute paths for certs/key
|
||||||
statement = SimpleStatement(drop_keyspace)
|
abs_path_ca_cert_path = os.path.abspath(CLIENT_CA_CERTS)
|
||||||
statement.consistency_level = ConsistencyLevel.ANY
|
abs_driver_keyfile = os.path.abspath(DRIVER_KEYFILE)
|
||||||
session.execute(statement)
|
abs_driver_certfile = os.path.abspath(DRIVER_CERTFILE)
|
||||||
|
|
||||||
cluster.shutdown()
|
ssl_options = {'ca_certs': abs_path_ca_cert_path,
|
||||||
|
'ssl_version': ssl.PROTOCOL_TLSv1,
|
||||||
|
'keyfile': abs_driver_keyfile,
|
||||||
|
'certfile': abs_driver_certfile,
|
||||||
|
'cert_reqs': ssl.CERT_REQUIRED,
|
||||||
|
'match_hostname': True}
|
||||||
|
validate_ssl_options(ssl_options)
|
||||||
|
|
||||||
def test_cannot_connect_without_client_auth(self):
|
def test_cannot_connect_without_client_auth(self):
|
||||||
"""
|
"""
|
||||||
@@ -213,6 +240,7 @@ class SSLConnectionAuthTests(unittest.TestCase):
|
|||||||
|
|
||||||
with self.assertRaises(NoHostAvailable) as context:
|
with self.assertRaises(NoHostAvailable) as context:
|
||||||
cluster.connect()
|
cluster.connect()
|
||||||
|
cluster.shutdown()
|
||||||
|
|
||||||
def test_cannot_connect_with_bad_client_auth(self):
|
def test_cannot_connect_with_bad_client_auth(self):
|
||||||
"""
|
"""
|
||||||
@@ -239,3 +267,4 @@ class SSLConnectionAuthTests(unittest.TestCase):
|
|||||||
'certfile': abs_driver_certfile})
|
'certfile': abs_driver_certfile})
|
||||||
with self.assertRaises(NoHostAvailable) as context:
|
with self.assertRaises(NoHostAvailable) as context:
|
||||||
cluster.connect()
|
cluster.connect()
|
||||||
|
cluster.shutdown()
|
||||||
|
|||||||
@@ -29,10 +29,9 @@ from cassandra.io.asyncorereactor import AsyncoreConnection
|
|||||||
from cassandra.protocol import QueryMessage
|
from cassandra.protocol import QueryMessage
|
||||||
from cassandra.connection import Connection
|
from cassandra.connection import Connection
|
||||||
from cassandra.policies import WhiteListRoundRobinPolicy
|
from cassandra.policies import WhiteListRoundRobinPolicy
|
||||||
from cassandra.query import SimpleStatement
|
|
||||||
|
|
||||||
from tests import is_monkey_patched
|
from tests import is_monkey_patched
|
||||||
from tests.integration import use_singledc, PROTOCOL_VERSION, execute_with_long_wait_retry
|
from tests.integration import use_singledc, PROTOCOL_VERSION
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from cassandra.io.libevreactor import LibevConnection
|
from cassandra.io.libevreactor import LibevConnection
|
||||||
@@ -56,7 +55,7 @@ class ConnectionTimeoutTest(unittest.TestCase):
|
|||||||
Connection.max_in_flight = self.defaultInFlight
|
Connection.max_in_flight = self.defaultInFlight
|
||||||
self.cluster.shutdown()
|
self.cluster.shutdown()
|
||||||
|
|
||||||
def testInFlightTimeout(self):
|
def test_in_flight_timeout(self):
|
||||||
"""
|
"""
|
||||||
Test to ensure that connection id fetching will block when max_id is reached/
|
Test to ensure that connection id fetching will block when max_id is reached/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user