AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1488347
Accepted
jww
jww
Asked: 2019-10-03 00:57:53 +0800 CST2019-10-03 00:57:53 +0800 CST 2019-10-03 00:57:53 +0800 CST

BER decodifica SubjectAltName e CHOICE?

  • 772

Estou tendo problemas para entender a sintaxe ao decodificar um SubjectAltName em um certificado TLS autoassinado. Eu acredito que o certificado está bem formado. O problema é que não entendo como decodificar arquivos CHOICE.

Primeiro, o SAN tem quatro nomes:

DNS.1  = example.com
DNS.2  = www.example.com
DNS.3  = mail.example.com
DNS.4  = ftp.example.com

Em seguida, RFC 5280, p. 127 diz:

SubjectAltName ::= GeneralNames

GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName

GeneralName ::= CHOICE {
     otherName                 [0]  AnotherName,
     rfc822Name                [1]  IA5String,
     dNSName                   [2]  IA5String,
     x400Address               [3]  ORAddress,
     directoryName             [4]  Name,
     ediPartyName              [5]  EDIPartyName,
     uniformResourceIdentifier [6]  IA5String,
     iPAddress                 [7]  OCTET STRING,
     registeredID              [8]  OBJECT IDENTIFIER }

E, finalmente, uma string codificada em hexadecimal começando em SEQUENCE:

3041820B6578616D706C652E636F6D820F7777772E6578616D706C652E636F6D82106D61696C2E6578616D706C652E636F6D820F6674702E6578616D706C652E636F6D

Eu entendo 30é a etiqueta e 41é o comprimento. Quando separo os valores, vejo:

820B6578616D706C652E636F6D
820F7777772E6578616D706C652E636F6D
82106D61696C2E6578616D706C652E636F6D
820F6674702E6578616D706C652E636F6D

Parece que 82é CHOICE, seguido pelo comprimento do valor e, em seguida, pelo valor. E todos os valores são concatenados juntos.

Minha pergunta é, como se 82tornou CHOICE? Não me lembro de tê-lo encontrado antes em ASN.1. Como faço para lidar com a decodificação?

encoding tls
  • 1 1 respostas
  • 125 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2019-10-03T01:58:03+08:002019-10-03T01:58:03+08:00

    Não há marca real para CHOICE em si (é um tipo "transparente") - em vez disso, cada tipo interno possível é determinado diretamente por sua própria marca. Por exemplo, quando você está decodificando um GeneralName, um iPAddress é indicado por ter a tag específica do contexto 7.

    Os dois bits mais altos de um byte de tag indicam sua classe (universal, app, context, private – você pode encontrar uma tabela na seção 3.1 do A Layman's Guide ). Portanto, byte 82corresponde a tag [CONTEXT 2], ou [2]abreviado, o que significa que você tem um dNSName .

    A mesma tag também significa que é uma IA5String – já que é uma tag implícita por padrão, ela sobrescreve a [universal 22]tag usual que uma IA5String teria. (É por isso que openssl asn1parsemostra apenas "cont [ 2 ]" - não tem a especificação real e não sabe o que está decodificando.)

    Às vezes, o tipo já pode ser determinado de forma inequívoca a partir das tags internas, por exemplo, o mesmo RFC tem DisplayText , que é uma ESCOLHA entre quatro tipos, cada um já tendo uma tag 'universal' diferente, portanto, não há necessidade de adicionar tags personalizadas.

    • 2

relate perguntas

  • Como codificar em WAV ADPCM?

  • Identifique um certificado SSL exclusivamente

  • Como tornar o servidor minikube tls-curlable?

  • gstreamer usando codificação h264 com tamanho de vídeo pequeno

  • Como esta mensagem de e-mail é codificada?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve