mirror of
https://github.com/certbot/certbot.git
synced 2026-07-30 16:14:44 +02:00
Switched from using urllib2 to requests.
urllib2 is a security hazzard, it does not perform certificate checks against a trust root by default, nor does it perform service_identity checks. Also, requests has a prettier API.
This commit is contained in:
@@ -1,10 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import M2Crypto
|
import M2Crypto
|
||||||
import urllib2, json
|
import json
|
||||||
# XXX TODO: per https://docs.google.com/document/pub?
|
|
||||||
#id=1roBIeSJsYq3Ntpf6N0PIeeAAvu4ddn7mGo6Qb7aL7ew
|
|
||||||
# urllib2 is unsafe (!) and must be replaced
|
|
||||||
import os, grp, pwd, sys, time, random, sys, shutil
|
import os, grp, pwd, sys, time, random, sys, shutil
|
||||||
|
|
||||||
# This line suppresses the no logging found for module 'jose' warning
|
# This line suppresses the no logging found for module 'jose' warning
|
||||||
@@ -22,6 +19,8 @@ from Crypto.PublicKey import RSA
|
|||||||
from Crypto.Signature import PKCS1_v1_5
|
from Crypto.Signature import PKCS1_v1_5
|
||||||
from Crypto.Hash import SHA256
|
from Crypto.Hash import SHA256
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
from letsencrypt.client.acme import acme_object_validate
|
from letsencrypt.client.acme import acme_object_validate
|
||||||
from letsencrypt.client.sni_challenge import SNI_Challenge
|
from letsencrypt.client.sni_challenge import SNI_Challenge
|
||||||
from letsencrypt.client.payment_challenge import Payment_Challenge
|
from letsencrypt.client.payment_challenge import Payment_Challenge
|
||||||
@@ -478,10 +477,10 @@ class Client(object):
|
|||||||
def send(self, json_obj):
|
def send(self, json_obj):
|
||||||
try:
|
try:
|
||||||
acme_object_validate(json.dumps(json_obj))
|
acme_object_validate(json.dumps(json_obj))
|
||||||
response = urllib2.urlopen(
|
response = requests.get(self.server_url, json=json_obj)
|
||||||
self.server_url, json.dumps(json_obj)).read()
|
body = response.content
|
||||||
acme_object_validate(response)
|
acme_object_validate(body)
|
||||||
return json.loads(response)
|
return response.json()
|
||||||
except:
|
except:
|
||||||
logger.fatal("Send() failed... may have lost connection to server")
|
logger.fatal("Send() failed... may have lost connection to server")
|
||||||
sys.exit(8)
|
sys.exit(8)
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
from letsencrypt.client.challenge import Challenge
|
from letsencrypt.client.challenge import Challenge
|
||||||
from letsencrypt.client import logger
|
from letsencrypt.client import logger
|
||||||
from letsencrypt.client.CONFIG import RECOVERY_TOKEN_EXT
|
from letsencrypt.client.CONFIG import RECOVERY_TOKEN_EXT
|
||||||
# TODO: Replace urllib2 because of lack of certificate validation checks
|
import dialog
|
||||||
import dialog, urllib2
|
|
||||||
|
|
||||||
class RecoveryContact(Challenge):
|
class RecoveryContact(Challenge):
|
||||||
|
|
||||||
@@ -48,7 +49,7 @@ class RecoveryContact(Challenge):
|
|||||||
|
|
||||||
def poll(self, rounds = 10, quiet = True):
|
def poll(self, rounds = 10, quiet = True):
|
||||||
for i in range(rounds):
|
for i in range(rounds):
|
||||||
if urllib2.urlopen(self.successURL).getcode() != 200:
|
if requests.get(self.successURL).status_code != 200:
|
||||||
time.sleep(self.poll_delay)
|
time.sleep(self.poll_delay)
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user