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から取得する