def emite_certificado(emissao): voucher = emissao.voucher if voucher.ssl_term == voucher.VALIDADE_ANUAL: validade = 1 elif voucher.ssl_term == voucher.VALIDADE_BIANUAL: validade = 2 elif voucher.ssl_term == voucher.VALIDADE_TRIANUAL: validade = 3 else: raise Exception('Validade inválida para emissão de certificados', code=-1) params = { 'loginName': settings.COMODO_LOGIN_NAME, 'loginPassword': settings.COMODO_LOGIN_PASSWORD, 'product': CODIGOS_PRODUTOS[voucher.ssl_product], 'years': validade, 'serverSoftware': emissao.emission_server_type, 'csr': emissao.emission_csr, 'prioritiseCSRValues': 'N', 'streetAddress1': voucher.customer_address1, 'localityName': voucher.customer_city, 'stateOrProvinceName': voucher.customer_state, 'postalCode': voucher.customer_zip, 'countryName': 'BR', 'emailAddress': 'none', 'isCustomerValidated': 'Y', 'foreignOrderNumber': emissao.crm_hash, #'checkFONIsUnique': 'Y', # comentei só pra ficar mais facil de testar, senao teria q criar um voucher toda hora 'responseFormat': '1', 'test': 'Y' if settings.COMODO_ENVIAR_COMO_TESTE else 'N', 'isAppRepValidated': 'Y', 'isCallbackCompleted': 'Y' } if voucher.ssl_product in (voucher.PRODUTO_MDC, voucher.PRODUTO_SAN_UCC, voucher.PRODUTO_EV_MDC): params['domainNames'] = emissao.emission_fqdns params['dcvEmailAddresses'] = emissao.emission_dcv_emails else: params['dcvEmailAddress'] = emissao.emission_dcv_emails if voucher.ssl_product in (voucher.PRODUTO_EV, voucher.PRODUTO_EV_MDC): params['joiLocalityName'] = voucher.customer_city params['joiStateOrProvinceName'] = voucher.customer_state params['joiCountryName'] = 'BR' response = requests.post(settings.COMODO_API_EMISSAO_URL, params) r = url_parse(response.text) if r['errorCode'] != '0': log.error('Ocorreu um erro na chamada da COMODO, parametros: %s' % params) raise ComodoError('Ocorreu um erro na chamada da COMODO', code=r['errorCode']) return r
def revoga_certificado(revogacao): params = { 'loginName': settings.COMODO_LOGIN_NAME, 'loginPassword': settings.COMODO_LOGIN_PASSWORD, 'orderNumber': revogacao.emissao.comodo_order, 'revocationReason': revogacao.revogacao_motivo, 'test': 'Y' if settings.COMODO_ENVIAR_COMO_TESTE else 'N', 'responseFormat': '1', } response = requests.post(settings.COMODO_API_REVOGACAO_URL, params) r = url_parse(response.text) if r['errorCode'] != '0': log.error('Ocorreu um erro na chamada da COMODO, parametros: %s' % params) raise ComodoError('Ocorreu um erro na chamada da COMODO', code=r['errorCode']) return r
def reemite_certificado(emissao): params = { 'loginName': settings.COMODO_LOGIN_NAME, 'loginPassword': settings.COMODO_LOGIN_PASSWORD, 'orderNumber': emissao.comodo_order, 'csr': emissao.emission_csr, 'isCustomerValidated': 'Y', 'foreignOrderNumber': emissao.crm_hash, 'responseFormat': '1', 'isAppRepValidated': 'Y', 'isCallbackCompleted': 'Y' } response = requests.post(settings.COMODO_API_REEMISSAO_URL, params) r = url_parse(response.text) if r['errorCode'] != '0': log.error('Ocorreu um erro na chamada da COMODO, parametros: %s' % params) raise ComodoError('Ocorreu um erro na chamada da COMODO', code=r['errorCode']) return r
def processa(self): url = self.cleaned_data["url"] response = requests.post("https://secure.comodo.com/sslchecker", {"url": url}) resultado = url_parse(response.text) resultado["ok"] = ok = int(resultado.get("error_code", 0)) == 0 if ok: altera_datas(resultado, ("cert_validity_notBefore", "cert_validity_notAfter")) resultado["expira_em"] = (resultado["cert_validity_notAfter"] - date.today()).days resultado["cert_subject_DN"] = urllib.unquote(resultado["cert_subject_DN"]).replace("\\r\\n", "\r\n") resultado["cert_issuer_DN"] = urllib.unquote(resultado["cert_issuer_DN"]).replace("\\r\\n", "\r\n") sans = [] site_listed = False for k, v in resultado.iteritems(): if k.startswith("cert_san_"): if url == v: site_listed = True sans.append(v) resultado["cert_sans"] = ", ".join(sans) resultado["site_listed"] = site_listed return resultado