关于HTTPS的困惑-> SSL握手如何进行

时间:2018-09-06 04:25:58

标签: ssl https

我一直是HTTPS的最终用户,但从来没有真正理解过HTTPS,但希望对此进行修改。

我正在通过HTTPS调用RESTful Web服务。例如...

library(shiny)
library(shinydashboard)
library(shinyBS)
library(shinyjs)

ui <- dashboardPage(

  dashboardHeader(
    title = "Test",
    titleWidth = 500),

  dashboardSidebar(
    sidebarMenu(id = "Menu1",
                sidebarMenuOutput("Menu"))),

  dashboardBody(
    shinyjs::useShinyjs(), # required to enable Shinyjs
    tabItems(

      tabItem(tabName = "HF_Page1",
              box(title = "A. People who live in the house", width = NULL, solidHeader = TRUE, status = "primary",
                  uiOutput("HF_Page1"),
                  actionButton("add_btn", "Add a person"),
                  actionButton("rm_btn", "Remove last person"),
                  textOutput("counter"))),

      tabItem(tabName = "HF_Page2",
              box(title = "B. Responses", width = NULL, solidHeader = TRUE, status = "primary",
                  DT::dataTableOutput("persons", width = 300), tags$hr()))

    ) # tabItems
  ) # dashboardBody
) # dashboardPage

所有请求都发送一个基本的身份验证标头,即用户名和密码。

当我通过应用程序进行这些调用时,我原本希望像jks一样添加一个证书(过去我必须这样做),但是在这种情况下,我发现我可以调用HTTPS Web服务没有。

要使HTTPS正常工作,我相信需要进行SSL握手吗?没有jks的情况如何成功发生?

再次,很抱歉这个初学者类型的问题。

1 个答案:

答案 0 :(得分:1)

在进行https://...请求时,客户端需要验证服务器证书是否为预期的证书,而不是中间的人。 (除其他事项外)这是通过确保服务器证书是由受信任的证书颁发机构(CA)颁发的。在本地信任存储区(即客户端本地)中设置了受信任的CA。在上面的调用中,没有给出明确的信任库的情况是curl使用其默认信任库。如果您明确指定了jks,则为应用程序提供了应使用的特定信任库。

有关如何验证服务器证书的更多信息,请参见SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate?