Https系列之一:https的簡單介紹及SSL證書的生成

来源:http://www.cnblogs.com/garyyan/archive/2017/09/25/7573435.html
-Advertisement-
Play Games

Https系列會在下麵幾篇文章中分別作介紹: 一:https的簡單介紹及SSL證書的生成二:https的SSL證書在伺服器端的部署,基於tomcat,spring boot三:讓伺服器同時支持http、https,基於spring boot四:https的SSL證書在Android端基於okhttp ...


Https系列會在下麵幾篇文章中分別作介紹:

一:https的簡單介紹及SSL證書的生成
二:https的SSL證書在伺服器端的部署,基於tomcat,spring boot
三:讓伺服器同時支持http、https,基於spring boot
四:https的SSL證書在Android端基於okhttp,Retrofit的使用

所有文章會優先在:
微信公眾號“顏家大少”中發佈
轉載請標明出處


一:本文的主要內容介紹

https的介紹
SSL證書的介紹
自簽名SSL證書介紹及生成方法
CA證書介紹及申請

二:https的簡單介紹

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL(Secure Socket Layer)。

SSL協議提供的服務主要有:
1)認證用戶和伺服器,確保數據發送到正確的客戶機和伺服器
2)加密數據以防止數據中途被竊取
3)維護數據的完整性,確保數據在傳輸過程中不被改變

關於https的介紹,網上有很多更詳細更專業的資料,在此只作簡單介紹,讓大家有一些概念性的瞭解,並最終完成android端和伺服器端的https的實現。

三:SSL證書的作用

SSL證書是數字證書的一種,類似於駕駛證、護照和營業執照的電子副本。
SSL證書的兩大作用:數據加密和身份認證
SSL 證書遵守 SSL協議,通過在客戶端瀏覽器和Web伺服器之間建立一條SSL安全通道
一個有效、可信的 SSL 數字證書包括一個公共密鑰和一個私用密鑰。公共密鑰用於加密信息,私用密鑰用於解譯加密的信息。因此,瀏覽器指向一個安全域時,SSL 將同步確認伺服器和客戶端,並創建一種加密方式和一個唯一的會話密鑰。它們可以啟動一個保證消息的隱私性和完整性的安全會話。

四:關於自簽名SSL證書

所謂自簽名證書,就是自己頒發給自己的證書 ,所以頒證的主體是不可信任的
自簽證書是不會被瀏覽器信任的證書的,用戶在訪問自簽證書時,瀏覽器會警告用戶此證書不受信任,需要人工確認是否信任此證書,如下圖:
這裡寫圖片描述
既然自簽證書是不可信任的,那為何還有人包括12306也在用自簽證書呢?
主要原因是:
1)自簽證書是免費的
2)自簽證書相對申請CA證書,流程更簡單
3)自簽證書同樣可以對數據進行加密
4)自簽證書的有效期可以設置很長,免去續簽的麻煩
5)自簽證書更方便測試,比如說你想生成多少個不同伺服器ip的都可以
所以對於一些個人開發者來說使用自簽證書可能會更方便,只要你能接受別人瀏覽你網站時彈出的提醒:不安全

五:關於CA 簽名SSL證書

相對自簽證書的自己給自己頒證,由權威的證書授權機構(Certificate Authority)頒發的簽名證書,我們稱之為:CA證書
CA證書保證書持有者的身份和公鑰的擁有權
瀏覽器對CA證書是信任的,如下圖:
這裡寫圖片描述

六:自簽名SSL證書的生成

自簽證書雖然提示:不安全。但還是有很多上面已提到的好處,所以下麵先說說自簽證書的生成,主要使用Java JDK下的:keytool.exe
1:先下載安裝Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2:安裝完後,根據實際的路徑找到keytool.exe,如我的在此路徑:C:\Program Files (x86)\Java\jdk1.8.0_101\bin\keytool.exe

3:生成keystore。打開命令行(cmd),去到keytool所在的路徑,運行:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore d:\mykeystore\keystore.p12 -validity 3650  -ext san=ip:192.168.100.132 -dname "CN=garyyan, OU=mycompany, O=mycompany, L=gd, ST=gd, C=china"

此命令中間只需要輸入密碼,就能生成keystore,假設密碼是:123456
其中:
1)keystore可理解為一個資料庫,可以存很多個組數據。
每組數據主要包含下麵兩種數據:
a:密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)
b:可信任的證書實體(trusted certificate entries)——只包含公鑰
2)-keystore d:\mykeystore\keystore.p12,指定在d:\mykeystore(先要手動創建此文件夾),生成keystore:keystore.p12
3)-alias tomcat,為其指明在keystore中的唯一的別名:tomcat ,因為keystore中可能還存有其它的別名,如:tomcat 2
4)-storetype PKCS12指明密鑰倉庫類型是PKCS12
5)-keyalg RSA,指定加密演算法,本例中的採用通用的RAS加密演算法
6)-keysize 2048指定密鑰的長度為2048
7)-validity 3650 指定證書的有效期為3650天
8)-ext san=ip:192.168.100.132請根據你的伺服器的IP地址設置,如果不進行設置,客戶端在訪問的時候可能會報錯
9)-dname “CN=garyyan, OU=mycompany,O=mycompany,L=gd, ST=gd, C=china”
其中:”CN=(名字與姓氏), OU=(組織單位名稱), O=(組織名稱), L=(城市或區功能變數名稱稱), ST=(州或省份名稱), C=(單位的兩字母國家代碼)”,我在測試的過程中發現隨便填就行

4:導出公鑰證書(主要用於客戶端)
運行命令:

keytool -export -keystore d:\mykeystore\keystore.p12 -alias tomcat -file mycer.cer -storepass 123456

其中:
1)-keystore d:\mykeystore\keystore.p12 是指上面的keystore文件
2)-alias tomcat是指定別名為tomcat的那一組
3)-file mycer.cer指定在當前目錄生成名為mycer.cer的證書
4)-storepass 123456是上面生成keystore 所用的密碼

七:CA證書的申請

有很多網站能申請CA證書,如沃通,騰訊,阿裡雲等,大家可根據自己的喜好去申請
CA證書又分免費和不同價錢的,當然一分錢一分貨,對於我們個人開發者來說,免費的CA證書就足夠了,
我個人主要是想解決當別人訪問我的https網站時彈出“不安全”的這個問題,因為“不安全”這個提示被人感覺很像釣魚網站 :P
下麵主要講的是去阿裡雲申請免費型DV SSL證書,此種證書是每個證書綁定一個功能變數名稱,如有多個功能變數名稱可申請多個證書
1:找到阿裡雲的CA證書
打開阿裡雲主頁:https://www.aliyun.com/,選“產品”再選“CA證書”如下圖:
這裡寫圖片描述
2:選擇:立即購買
3:選擇免費型DV SSL(最主要是不用錢呵 :p),點立即購買,如下圖:
這裡寫圖片描述
4:點“確認訂單”->”去支付“
5:點”證書控制台“
6:點如下圖的”補全“,然後填寫個人資料
這裡寫圖片描述
7:信息補全後點提交,提交後大概一小時左右就能收到證書申請成功的信息,接下來就下載證書:
去到:”管理控制台“->”產品與服務”->”我的證書“,選擇”下載”
這裡寫圖片描述
8:阿裡雲能根據不同的伺服器生成不同的證書,如tomcat,apache等,選擇自己所要的,如下圖:
這裡寫圖片描述

至此,”Https系列之一:https的簡單介紹及SSL證書的生成”已完成。
更多內容請看:Https系列之二:https的SSL證書在伺服器端的部署,基於tomcat,spring boot


更多內容,請關註微信公眾號:顏家大少
這裡寫圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • XCode9已經隨著ios11的發佈發佈了,那麼在這個XCode9版本中有哪些變化呢? 1 摺疊代碼 焦點在方法的實現體的方法名上,按comman鍵,則整個函數會被框住.用來標誌這個方法的起點和終點 此時單擊,出現菜單 在菜單里,有個Fold,可以用來摺疊方法,這個摺疊現在有個動畫效果 在其它上面點 ...
  • 最近很久沒有更新博客了,因為一直在學習前端h5 手機app的開發。曾經一度覺得自己css和js學得不錯,進入到前端領域後才發現水很深~,寫代碼時HBuilder和VS混用,HBuilder的快捷鍵和代碼提示以及真機調試方便,但是錯誤提示和代碼格式化是硬傷,VS的前端報錯提示很智能,代碼格式化很順暢, ...
  • 9月份蘋果發佈了IOS11和Iphone X,這一操作系統一硬體對於開發者適配上面還是造作了不少蛋疼的地方。先來看看IOS 11,這些蛋疼的需要適配的地方: 1、UIScrollView及其子類在IOS 11之前的版本UI顯示完全正常,但是在IOS 11上面會顯示奇葩的界面。 (1)先看一下UITa ...
  • 前提 眾所周知,開發iOS應用必須要有iOS證書(Certificates)和配置文件(Provisioning Profiles),那麼問題來了: 1.什麼是iOS證書,它是如何與app應用關聯的?2.iOS開發證書和生產證書有何區別,如何使用的?3.證書與配置文件(Provisioning Pr ...
  • 在該項目包名時遇到的一個android打包問題,如下 改包名步驟 1. 修改android/app/build.gradle里的applicationId,為新包名,如:com.xxx.yyy.myProject 2. 修改android/app/src/main/AndroidManifest.x ...
  • Android 8.0 為用戶和開發者引入多種新功能。本文重點介紹面向開發者的新功能。 用戶體驗 通知 在 Android 8.0 中,我們已重新設計通知,以便為管理通知行為和設置提供更輕鬆和更統一的方式。這些變更包括: 通知渠道:Android 8.0 引入了通知渠道,其允許您為要顯示的每種通知類 ...
  • 1. UIStackView相關屬性理解 UIStackView是iOS9之後推出的,我也是第一次接觸,在學習的過程中對於其中的相關屬性,尤其是對其中的distribution幾個屬性值,一知半解的,所以特寫此文通過代碼實例理解它們每個屬性的區別。 UIStackView主要包括了四大屬性:axis ...
  • 多渠道打包: 可以理解為:同時發佈多個渠道的apk。分別上架不同的應用商店。這些apk帶有各自渠道的標簽,用於統計分析各個商店的下載次數等數據。 實現步驟 一、添加友盟渠道標簽 添加位置:app目錄下的 AndroidManifest.xml文件 添加語句: 示例: 二、添加渠道 添加幾個,打包的時 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...