php – Requisição “Curl” no meu servidor está com erro no certificado SSL

Estou realizando uma requisição Curl com PHP na minha hospedagem.
Porém se deixo o parâmetro “CURLOPT_SSL_VERIFYPEER” verdadeiro, a requisição me retorna o erro “cURL error 60: SSL certificate: unable to get local issuer certificate“.

Porém meu site está com ssl ativo e funcionando normalmente.

Como faço para ativar esse ssl nas respostas das requisiçoes curl na minha hospedagem?

Meu código Curl de exemplo:

$curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://site.com.br',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_SSL_VERIFYPEER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => $json,
            CURLOPT_HTTPHEADER => array(
                'Content-Type: text/plain'
            ),
        ));
        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);

certificado – Uso do swagger no mac

Estou seguindo um tutorial para a criacao de uma api com dotnet core, e estou com o seguinte problema: Ao utilizar o comando dotnet dev-certs https –trust eu deveria estar habilitado a usar o swagger, mas tenho a seguinte resposta no console:
inserir a descrição da imagem aqui

Quanto uso https://localhost:5001/swagger o servidor nao carrega. Como posso corrigir isso?

c# – Como extrair CNPJ do Certificado Digital A1 .pfx ou .p12 no Linux e Windows usando .NET Core?

Estou desenvolvendo um sistema onde fazemos o cadastro de empresas por certificado digital, em que o usuário faz o upload do arquivo, coloca a senha e importa.
Eu preciso extrair o CNPJ que está dentro do certificado para consultar os dados da Empresa na Receita Federal e realizar o cadastro.

O sistema tem como finalidade consultar Documentos Fiscais na Sefaz, por isso precisamos do Certificado e dos dados da Empresa.

Em uma máquina Windows (no meu ambiente de desenvolvimento), estava usando esse método para extrair o CNPJ e estava dando certo:

public static string ExtrairCNPJArquivo(X509Certificate2 arquivo)
{
  const string oid = "2.16.76.1.3.3";
  StringBuilder cnpj = new StringBuilder();

  foreach (X509Extension extension in arquivo.Extensions)
  {
    string texto = extension.Format(true);
    string() linhas = texto.Split(new char() { 'n', 'r' }, StringSplitOptions.RemoveEmptyEntries);

    for (int i = 0; i < linhas.Length; i++)
    {
      if (linhas(i).Trim().StartsWith(oid))
      {
        string valores = linhas(i).Substring(linhas(i).IndexOf('=') + 1);
        string() elementos = valores.Split(' ');

        byte() cnpjBytes = new byte(14);

        for (int j = 0; j < cnpjBytes.Length; j++)
          cnpjBytes(j) = Convert.ToByte(elementos(j + 2), 16);

        cnpj.Append(Encoding.UTF8.GetString(cnpjBytes));

        break;
      }
    }

    if (!string.IsNullOrEmpty(cnpj.ToString()))
      break;
  }

  return cnpj.ToString();
}

Mas no meu ambiente de produção, uso uma máquina Linux que roda no Docker, e essa forma usada acima não funciona para essa plataforma.
O texto do extension.Format(true); estava vindo como othername:<unsupported> e é nesse texto onde vem o CNPJ do Certificado. Então vi que no Linux não funciona dessa forma.

Como posso fazer isso funcionar nas duas plataformas?

c# – Usar Certificado Digital A1 para consulta Status do Serviço NFE IIS Windows Server 2016

Pessoal estou com um problema que não sei como resolver, tenho um site construído em Asp .Net, quando salvo uma entidade (No Lado do Servidor) preciso acessar um web Service consultando o status do serviço da NFE usando soap, TLS 1.2 e certificado digital A1. Quando faço essa consulta me retorna o erro “Could Not create SSL/TLS Secure Channel”.

Rodando em um IIS Local e no windows 10 a O Site funciona normalmente. Comecei a desconfiar de alguma configuração do windows Server, e temos muitos posts mostrando como configurar, mas fiz um segundo teste criando uma aplicação WinForms que faz a mesma consulta, e a mesma funciona tanto local quanto no servidor. Então mudei minha desconfiança para IIS no Servidor. (Pois a Site roda em outro ambiente(local), o Winforms consegue realizar a consulta no Servidor).

Essa parte de Consulta a do Status da NFE esta em um projeto separado (DLL) então só importei ela no projeto WinForms e Asp. Net. Então tenho Certeza que a consulta nas duas aplicações realizadas da mesma forma.

Porém não consegui encontrar posts mostrando essa configuração no IIS, Alguém pode me ajudar? Desde já agradeço a todos

Como obter o certificado do CA no android.net.http.SslError, em Java?

Estou tentando replicar uma implementação, que está em outra linguagem (Golang). Nela é possível fazer o seguinte:

client := http.Client{Transport: &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}}
resp, err := client.Get("https://untrusted-root.badssl.com")
if err != nil {
    panic(err)
}

for _, c := range resp.TLS.PeerCertificates {
    if !c.IsCA {
        continue
    }
    h := sha256.Sum256(c.RawSubjectPublicKeyInfo)
    fmt.Println(base64.StdEncoding.EncodeToString(h(:)))
}

Que resulta em, por exemplo:

sr2tjak7H6QRi8o0fyIXGWdPiU32rDsczcIEAqA+s4g=

O que é mais importante do código é o acesso à todos o certificados, o PeerCertificates é um slice/array de ()X509.Certificate e c.IsCA verifica se ele é o CA (independente de ser válido ou não, neste caso).


Eu tentei fazer o seguinte:

    @Override public void onReceivedSslError(WebView v, final SslErrorHandler sslHandler, SslError err){

        byte() pk = err.getCertificate().getX509Certificate().getPublicKey().getEncoded();

        try {
            MessageDigest h = MessageDigest.getInstance("SHA-256");
            h.update(pk);

            Log.i("PK:", Base64.getEncoder().encodeToString(h.digest()));
        } catch (Exception e) {

        }

Porém o resultado é:

9SLklscvzMYj8f+52lp5ze/hY0CFHyLSPQzSpYYIBm8=

Essa chave é última, isso é a a chave do site em sí e não do CA.

O SslError parece só expor um único método de getCertificate(), como consta em https://developer.android.com/reference/android/net/http/SslError#getCertificate(). Então, como consigo obter a chave/certificado do CA?


Como faço para obter a chave pública (o Subject Public Key Info) de todos os certificados ou, pelo menos, somente o do CA?

Python – consultar NFe via API, diretamente no SEFAZ SP com certificado digital

Estou procurando uma forma de consultar NFe via API, diretamente no SEFAZ SP utilizando um certificado digital e em Python.

Existe alguma forma de fazer a request sem a necessidade de um intermediário (empresas que oferecem suas APIs), carregando o certificado digital durante a request diretamente no SEFAZ?

php – api no telegram no servidor com certificado enviando para servidor sem certificado

Tenho dois sistemas que realizam integração com outro, um portal com certificado e um sistema de controle sem certificado, tenho um chat do telegram que só funciona no sistema de controle, e no portal só aparece as mensagens que foram enviadas por outro meio, e ao tentar enviar ocorre um erro.

Alguém já teve esse problema ou sabe como resolver?

Assinatura de pdf com Certificado Digital

Estou há 3 dias pesquisando sobre como assinar digitalmente um arquivo pdf. O meu problema consiste no seguinte: crio contratos no word e salvo no formato PDF em uma pasta.

O que eu preciso é criar um aplicativo em Python que abra um arquivo pdf já criado e assine-o digitalmente através de um Certificado Digital pfx. Essa assinatura deveria ser inserida no final de cada documento.
Já tentei várias ferramentas, porém nenhuma funcionou no Python 3.8.
Alguém tem conhecimento sobre o assunto, utiliza, ou saberia dar alguma dica?
Obrigado!