Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
    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