Nerves Hub Web

NervesHubDeviceWeb

Socketの認証

NervesHubDeviceWeb.UserSocket の connectのNervesHubDevice.SSL.verify_device(certificate) で行う。

クライアントは %{peer_data: %{ssl_cert: ssl_cert}} をsocket接続時に投げている。

この ssl_cert は otp_certificate, one time passworde certificattion として扱われているようだ。TODO 要調査

verify_device(certificate)
-> Devices.get_device_certificate_by_x509(certificate)
   -> aki = NervesHubWebCore.Certificate.get_aki(cert)
      serial = NervesHubWebCore.Certificate.get_serial_number(cert)
      {not_before, not_after} = NervesHubWebCore.Certificate.get_validity(cert)
      をに一致するcertificateをDBから取得する