我一直是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的情况如何成功发生?
再次,很抱歉这个初学者类型的问题。
答案 0 :(得分:1)
在进行https://...
请求时,客户端需要验证服务器证书是否为预期的证书,而不是中间的人。 (除其他事项外)这是通过确保服务器证书是由受信任的证书颁发机构(CA)颁发的。在本地信任存储区(即客户端本地)中设置了受信任的CA。在上面的调用中,没有给出明确的信任库的情况是curl
使用其默认信任库。如果您明确指定了jks,则为应用程序提供了应使用的特定信任库。
有关如何验证服务器证书的更多信息,请参见SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate?。