gRPC ã® TLS ã NLBã§çµç«¯ãããã¨æã£ã¦ãããããã¶ãã¨ãã©ãã£ã¦ãã¾ãã¾ããã çµå±ã®ã¨ãããã®åå 㯠ALPN ã«ãã£ãã®ã§ãããã¼ãèªèº«ã ALPN ã«è©³ãããªãããããªããªãããããããªãã£ãã ãã®ããããã¡ã㨠ALPN ãç解ãããã¨ããã®ãæ¬ã¨ã³ããªã®è¶£æ¨ã«ãªãã¾ãã
ALPN
ALPN 㯠Application-Layer Protocol Negotiation ã®ç¥ã§ãTLS ã®æ¡å¼µã§ããRFC 㯠RFC 7301 - Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extensionã ALPN ãä½ããã¦ãããæ¡å¼µãã¨ããã¨ãTLS ã®ä¸ã®ã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã§ä½¿ç¨ãããããã³ã«ã Client - Server éã§ãã´ã·ã¨ã¼ã·ã§ã³ããããã®æ¡å¼µã«ãªãã¾ãã
Client 㯠TLS 㮠ClientHello
ã¡ãã»ã¼ã¸ã®ä¸ã§ãèªåã®ãµãã¼ãã§ãããããã³ã«ããªã¹ãå½¢å¼ã§ Server ã«éãã¾ãããã®ãªã¹ãã¯ãèªåãå©ç¨ãæããããã³ã«é ã«ãªã£ã¦ãã¾ãã
Server ã¯ããã®ä¸ã§ Server èªèº«ã対å¿ãã¦ãããããã³ã«ãé¸ã³ãServerHello
ã¡ãã»ã¼ã¸ã®ä¸ã§ãã®é¸æçµæãè¿å´ãã¾ãã
RFC ã®ä¸ã®å³ã§èª¬æããã¨ã以ä¸ã®ããã«ãªãã¾ããã¾ã ã³ãã¯ã·ã§ã³ç¢ºç«åã®æ®µéãªã®ã§ããããã®ãã´ã·ã¨ã¼ã·ã§ã³ã¯å¹³æã§è¡ããã¾ãã
Client Server ClientHello --------> ServerHello (ALPN extension & (ALPN extension & list of protocols) selected protocol) Certificate* ServerKeyExchange* CertificateRequest* <-------- ServerHelloDone Certificate* ClientKeyExchange CertificateVerify* [ChangeCipherSpec] Finished --------> [ChangeCipherSpec] <-------- Finished Application Data <-------> Application Data
ãããã©ãããã¢ããªã±ã¼ã·ã§ã³ãããã³ã«ããããã®é¸æè¢ã«å
¥ããã¨ããã¨ãHTTP/1.1
ã SPDY/3
ã HTTP/2 over TLS
ã HTTP/2 over TCP
ãªã©ãããã¾ãã
ALPN 㨠HTTP/2
HTTP/2 ã® RFC (RFC 7540) ã«ã¯ä»¥ä¸ã®è¨è¿°ããããTLS 㧠HTTP/2 ã使ããã¨ããã¨ãALPN ãåæã«ãªã£ã¦ãããã¨ããããã¾ãã
A client that makes a request to an "https" URI uses TLS with the application-layer protocol negotiation (ALPN) extension.
ãªã NLB ä¸ã§ gRPC ã使ç¨ã§ããªãã£ãã®ã
ããããã¯æ³åãå«ã¿ã¾ãã
- NLB 㧠TLS ãçµç«¯ãããã¨ãã¦ãã
- ãã㦠NLB ã§ã¯ãããã ALPN ããµãã¼ããã¦ããªãã
ã¨ããããã§ãgRPC ã¯ã©ã¤ã¢ã³ãã NLB ã¨ã® ALPN ã®ãã´ã·ã¨ã¼ã·ã§ã³ã§å¤±æãã¦ããã¨ãããã¨ãçç±ãªãã ã¨ç解ãã¦ãã¾ãã 訳ãããããªãã£ãã®ã¯ãGo ã® gRPC ã¯ã©ã¤ã¢ã³ãã§ã¯æåããã«ãããããã node.js ã® gRPC ã®ã¯ã©ã¤ã¢ã³ãã§å¤±æããè¨èªéã§æåãç°ãªã£ã¦ããã¨ãããã¨ã ããã¯ãããããGo ã® gRPC ã¯ã©ã¤ã¢ã³ãã®ãã°ã