@fredlackey/devutils 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,937 @@
1
+ # Installing CA Certificates
2
+
3
+ ## Overview
4
+
5
+ CA certificates (Certificate Authority certificates) are digital certificates that establish a chain of trust for SSL/TLS connections. They are used by web browsers, command-line tools like cURL and wget, programming languages, and other applications to verify that secure connections to remote servers are legitimate and not being intercepted by malicious actors.
6
+
7
+ When you connect to a website using HTTPS, your system checks the server's SSL certificate against its collection of trusted CA certificates. If the server's certificate was issued by a trusted CA (or a chain leading back to one), the connection is considered secure.
8
+
9
+ CA certificates are essential for:
10
+ - Secure web browsing (HTTPS)
11
+ - Package manager operations (downloading from secure repositories)
12
+ - API calls from applications
13
+ - Git operations over HTTPS
14
+ - Email encryption (TLS)
15
+ - VPN connections
16
+
17
+ ## Dependencies
18
+
19
+ ### macOS (Homebrew)
20
+ - **Required:** Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
21
+ - **Optional:** None
22
+ - **Auto-installed:** None (macOS uses the system Keychain for CA certificates; Homebrew package provides Mozilla CA bundle for command-line tools)
23
+
24
+ ### Ubuntu (APT/Snap)
25
+ - **Required:** None (APT is built into Ubuntu/Debian)
26
+ - **Optional:** None
27
+ - **Auto-installed:** OpenSSL (installed automatically by APT as a dependency)
28
+
29
+ ### Raspberry Pi OS (APT/Snap)
30
+ - **Required:** None (APT is built into Raspberry Pi OS)
31
+ - **Optional:** None
32
+ - **Auto-installed:** OpenSSL (installed automatically by APT as a dependency)
33
+
34
+ ### Amazon Linux (DNF/YUM)
35
+ - **Required:** None (DNF/YUM is built into Amazon Linux)
36
+ - **Optional:** None
37
+ - **Auto-installed:** p11-kit-trust, OpenSSL (installed automatically by DNF/YUM as dependencies)
38
+
39
+ ### Windows (Chocolatey/winget)
40
+ - **Required:** None (Windows manages CA certificates through the Windows Certificate Store, which is built into the operating system)
41
+ - **Optional:** None
42
+ - **Auto-installed:** None (Windows Update automatically maintains root CA certificates)
43
+
44
+ ### Git Bash (Manual/Portable)
45
+ - **Required:** Git for Windows - Download from https://git-scm.com/download/win or install via `choco install git -y`
46
+ - **Optional:** None
47
+ - **Auto-installed:** None (Git for Windows includes its own CA certificate bundle for Git and cURL operations)
48
+
49
+ ## Prerequisites
50
+
51
+ Before managing CA certificates on any platform, ensure:
52
+
53
+ 1. **Internet connectivity** - Required to download packages and certificate updates
54
+ 2. **Administrative privileges** - Required on all platforms for system-wide certificate store modifications
55
+ 3. **Understanding of security implications** - Adding untrusted CA certificates can compromise system security
56
+
57
+ **Important Security Note**: Only add CA certificates from sources you explicitly trust. Adding a malicious CA certificate to your system's trust store allows attackers to intercept all your encrypted traffic (man-in-the-middle attacks).
58
+
59
+ ## Platform-Specific Installation
60
+
61
+ ### macOS (Homebrew)
62
+
63
+ #### Prerequisites
64
+
65
+ - macOS 10.15 (Catalina) or later (macOS 14 Sonoma+ recommended)
66
+ - Homebrew package manager installed
67
+ - Terminal access
68
+
69
+ macOS maintains CA certificates in two locations:
70
+ 1. **System Keychain** - Used by Safari, native macOS applications, and system services
71
+ 2. **Homebrew ca-certificates** - Used by Homebrew-installed tools like cURL, OpenSSL, and Python
72
+
73
+ If Homebrew is not installed, install it first:
74
+
75
+ ```bash
76
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
77
+ ```
78
+
79
+ #### Installation Steps
80
+
81
+ Run the following command to install the Mozilla CA certificate bundle via Homebrew:
82
+
83
+ ```bash
84
+ brew install --quiet ca-certificates
85
+ ```
86
+
87
+ The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
88
+
89
+ After installation, Homebrew-installed tools automatically use this certificate bundle. The certificate bundle is sourced from Mozilla (via https://curl.se/docs/caextract.html) and is regularly updated.
90
+
91
+ #### Verification
92
+
93
+ Confirm the installation succeeded:
94
+
95
+ ```bash
96
+ brew list ca-certificates
97
+ ```
98
+
99
+ Expected output (file list showing certificate locations):
100
+
101
+ ```
102
+ /opt/homebrew/Cellar/ca-certificates/2024-11-26/share/ca-certificates/cacert.pem
103
+ ```
104
+
105
+ Verify SSL connections work with the updated certificates:
106
+
107
+ ```bash
108
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
109
+ ```
110
+
111
+ Expected output: `200`
112
+
113
+ Check the certificate file location:
114
+
115
+ ```bash
116
+ brew --prefix ca-certificates
117
+ ```
118
+
119
+ Expected output: `/opt/homebrew/opt/ca-certificates` (Apple Silicon) or `/usr/local/opt/ca-certificates` (Intel).
120
+
121
+ #### Troubleshooting
122
+
123
+ **Problem**: SSL errors persist after installing ca-certificates
124
+
125
+ **Solution**: Run the post-install script to regenerate certificate symlinks:
126
+
127
+ ```bash
128
+ brew postinstall ca-certificates
129
+ ```
130
+
131
+ **Problem**: Homebrew tools still report certificate errors in corporate environments with SSL inspection
132
+
133
+ **Solution**: Your organization uses a proxy that intercepts SSL traffic. You need to add your organization's CA certificate to the Homebrew trust store:
134
+
135
+ ```bash
136
+ # Export your organization's CA certificate from Keychain Access as a .pem file
137
+ # Then add it to Homebrew's certificate bundle
138
+ cat /path/to/corporate-ca.pem >> "$(brew --prefix)/etc/ca-certificates/cert.pem"
139
+ brew postinstall ca-certificates
140
+ ```
141
+
142
+ **Problem**: System tools (Safari, Mail) show certificate errors
143
+
144
+ **Solution**: System applications use the macOS Keychain, not Homebrew's ca-certificates. Use Keychain Access to manage system-wide certificates, or install certificates via command line:
145
+
146
+ ```bash
147
+ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/certificate.crt
148
+ ```
149
+
150
+ ---
151
+
152
+ ### Ubuntu/Debian (APT)
153
+
154
+ #### Prerequisites
155
+
156
+ - Ubuntu 18.04 LTS or later, or Debian 10 (Buster) or later
157
+ - sudo privileges
158
+ - Internet connectivity
159
+
160
+ The `ca-certificates` package is typically pre-installed on Ubuntu and Debian systems. The steps below ensure it is installed and up to date.
161
+
162
+ #### Installation Steps
163
+
164
+ Run the following commands to update package lists and install/update the CA certificates package:
165
+
166
+ ```bash
167
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
168
+ ```
169
+
170
+ The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
171
+
172
+ After installing or updating the package, regenerate the certificate bundle:
173
+
174
+ ```bash
175
+ sudo update-ca-certificates
176
+ ```
177
+
178
+ This command:
179
+ 1. Reads certificate configuration from `/etc/ca-certificates.conf`
180
+ 2. Processes certificates from `/usr/share/ca-certificates/` and `/usr/local/share/ca-certificates/`
181
+ 3. Generates the unified bundle at `/etc/ssl/certs/ca-certificates.crt`
182
+ 4. Creates individual certificate symlinks in `/etc/ssl/certs/`
183
+
184
+ #### Verification
185
+
186
+ Confirm the package is installed:
187
+
188
+ ```bash
189
+ dpkg -l | grep ca-certificates
190
+ ```
191
+
192
+ Expected output (version numbers may vary):
193
+
194
+ ```
195
+ ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
196
+ ```
197
+
198
+ Verify the certificate bundle exists:
199
+
200
+ ```bash
201
+ ls -la /etc/ssl/certs/ca-certificates.crt
202
+ ```
203
+
204
+ Test SSL connectivity:
205
+
206
+ ```bash
207
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
208
+ ```
209
+
210
+ Expected output: `200`
211
+
212
+ #### Troubleshooting
213
+
214
+ **Problem**: `E: Unable to locate package ca-certificates`
215
+
216
+ **Solution**: Update the package list first:
217
+
218
+ ```bash
219
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
220
+ ```
221
+
222
+ **Problem**: SSL errors after fresh install with message about `/etc/ssl/certs/ca-certificates.crt`
223
+
224
+ **Solution**: The certificate bundle may not have been generated. Run:
225
+
226
+ ```bash
227
+ sudo update-ca-certificates --fresh
228
+ ```
229
+
230
+ The `--fresh` flag removes existing symlinks and regenerates everything from scratch.
231
+
232
+ **Problem**: Custom/corporate CA certificate not being recognized
233
+
234
+ **Solution**: Ensure the certificate:
235
+ 1. Has a `.crt` extension (required)
236
+ 2. Is in PEM format (text format starting with `-----BEGIN CERTIFICATE-----`)
237
+ 3. Is placed in `/usr/local/share/ca-certificates/`
238
+
239
+ Then run:
240
+
241
+ ```bash
242
+ sudo update-ca-certificates
243
+ ```
244
+
245
+ **Problem**: Need to convert DER format certificate to PEM
246
+
247
+ **Solution**: Use OpenSSL to convert:
248
+
249
+ ```bash
250
+ sudo openssl x509 -inform der -outform pem -in certificate.der -out /usr/local/share/ca-certificates/certificate.crt
251
+ sudo update-ca-certificates
252
+ ```
253
+
254
+ ---
255
+
256
+ ### Raspberry Pi OS (APT)
257
+
258
+ #### Prerequisites
259
+
260
+ - Raspberry Pi OS (32-bit or 64-bit)
261
+ - Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended for 64-bit)
262
+ - sudo privileges
263
+ - Internet connectivity
264
+
265
+ Raspberry Pi OS is based on Debian, so CA certificates management follows the same process as Ubuntu/Debian. The `ca-certificates` package is typically pre-installed.
266
+
267
+ #### Installation Steps
268
+
269
+ Run the following commands to update package lists and install/update the CA certificates package:
270
+
271
+ ```bash
272
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
273
+ ```
274
+
275
+ The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
276
+
277
+ After installing or updating the package, regenerate the certificate bundle:
278
+
279
+ ```bash
280
+ sudo update-ca-certificates
281
+ ```
282
+
283
+ **ARM Architecture Note**: The ca-certificates package is architecture-independent (it contains only certificate data files, no compiled binaries), so there is no difference between ARM and x86 installations.
284
+
285
+ #### Verification
286
+
287
+ Confirm the package is installed:
288
+
289
+ ```bash
290
+ dpkg -l | grep ca-certificates
291
+ ```
292
+
293
+ Expected output (version numbers may vary):
294
+
295
+ ```
296
+ ii ca-certificates 20230311 all Common CA certificates
297
+ ```
298
+
299
+ Verify the certificate bundle exists and check its size:
300
+
301
+ ```bash
302
+ ls -la /etc/ssl/certs/ca-certificates.crt
303
+ ```
304
+
305
+ Expected output shows a file of approximately 200-250KB containing all trusted CA certificates.
306
+
307
+ Test SSL connectivity:
308
+
309
+ ```bash
310
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
311
+ ```
312
+
313
+ Expected output: `200`
314
+
315
+ #### Troubleshooting
316
+
317
+ **Problem**: `apt-get update` fails with 404 errors
318
+
319
+ **Solution**: Package mirrors may be outdated. Use the `--fix-missing` flag:
320
+
321
+ ```bash
322
+ sudo apt-get update --fix-missing && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates
323
+ ```
324
+
325
+ **Problem**: `server certificate verification failed` errors
326
+
327
+ **Solution**: The CA certificate bundle may be outdated or corrupted. Reinstall and regenerate:
328
+
329
+ ```bash
330
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --reinstall ca-certificates
331
+ sudo update-ca-certificates --fresh
332
+ ```
333
+
334
+ **Problem**: Slow download speeds during installation
335
+
336
+ **Solution**: Raspberry Pi may have limited bandwidth, especially over WiFi. Use a wired Ethernet connection if available, or wait for the installation to complete.
337
+
338
+ **Problem**: Disk space errors during installation
339
+
340
+ **Solution**: Check available space and clean up:
341
+
342
+ ```bash
343
+ df -h
344
+ sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
345
+ sudo DEBIAN_FRONTEND=noninteractive apt-get clean
346
+ ```
347
+
348
+ ---
349
+
350
+ ### Amazon Linux/RHEL (DNF/YUM)
351
+
352
+ #### Prerequisites
353
+
354
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
355
+ - sudo privileges
356
+ - Internet connectivity
357
+
358
+ The `ca-certificates` package is pre-installed on all Amazon Linux versions. Amazon Linux 2023 uses `dnf` as the package manager, while Amazon Linux 2 uses `yum`.
359
+
360
+ **Note**: Unlike Debian-based systems that use `update-ca-certificates`, Red Hat-based systems (including Amazon Linux) use `update-ca-trust` to manage the certificate trust store.
361
+
362
+ #### Installation Steps
363
+
364
+ **For Amazon Linux 2023:**
365
+
366
+ Run the following command to ensure ca-certificates is installed and up to date:
367
+
368
+ ```bash
369
+ sudo dnf install -y ca-certificates && sudo update-ca-trust
370
+ ```
371
+
372
+ **For Amazon Linux 2:**
373
+
374
+ Run the following command to ensure ca-certificates is installed and up to date:
375
+
376
+ ```bash
377
+ sudo yum install -y ca-certificates && sudo update-ca-trust
378
+ ```
379
+
380
+ The `-y` flag automatically confirms installation prompts, enabling non-interactive execution.
381
+
382
+ The `update-ca-trust` command:
383
+ 1. Reads certificates from `/etc/pki/ca-trust/source/anchors/` and `/usr/share/pki/ca-trust-source/`
384
+ 2. Generates the unified bundle at `/etc/pki/tls/certs/ca-bundle.crt`
385
+ 3. Updates OpenSSL-compatible certificate directory at `/etc/pki/tls/certs/`
386
+
387
+ #### Verification
388
+
389
+ Confirm the package is installed:
390
+
391
+ ```bash
392
+ rpm -q ca-certificates
393
+ ```
394
+
395
+ Expected output (version numbers may vary):
396
+
397
+ ```
398
+ ca-certificates-2023.2.60_v7.0.306-1.0.amzn2023.0.1.noarch
399
+ ```
400
+
401
+ Verify the certificate bundle exists:
402
+
403
+ ```bash
404
+ ls -la /etc/pki/tls/certs/ca-bundle.crt
405
+ ```
406
+
407
+ Test SSL connectivity:
408
+
409
+ ```bash
410
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
411
+ ```
412
+
413
+ Expected output: `200`
414
+
415
+ #### Troubleshooting
416
+
417
+ **Problem**: Custom CA certificate not being recognized
418
+
419
+ **Solution**: Ensure the certificate is placed in the correct location and update the trust store:
420
+
421
+ ```bash
422
+ sudo cp /path/to/custom-ca.crt /etc/pki/ca-trust/source/anchors/
423
+ sudo update-ca-trust
424
+ ```
425
+
426
+ **Problem**: `update-ca-trust: command not found`
427
+
428
+ **Solution**: The `p11-kit-trust` package may be missing. Install it:
429
+
430
+ ```bash
431
+ # Amazon Linux 2023
432
+ sudo dnf install -y p11-kit-trust
433
+
434
+ # Amazon Linux 2
435
+ sudo yum install -y p11-kit-trust
436
+ ```
437
+
438
+ **Problem**: SSL errors with Let's Encrypt certificates
439
+
440
+ **Solution**: Older Amazon Linux instances may have outdated CA certificates that don't include newer Let's Encrypt root certificates. Update the package:
441
+
442
+ ```bash
443
+ # Amazon Linux 2023
444
+ sudo dnf update -y ca-certificates
445
+
446
+ # Amazon Linux 2
447
+ sudo yum update -y ca-certificates
448
+ ```
449
+
450
+ **Problem**: `dnf: command not found` on Amazon Linux 2
451
+
452
+ **Solution**: Amazon Linux 2 uses `yum` instead of `dnf`. Use `yum` for all package operations:
453
+
454
+ ```bash
455
+ sudo yum install -y ca-certificates
456
+ ```
457
+
458
+ ---
459
+
460
+ ### Windows (Chocolatey/winget)
461
+
462
+ #### Prerequisites
463
+
464
+ - Windows 10 or Windows 11
465
+ - Administrator PowerShell or Command Prompt
466
+ - Internet connectivity
467
+
468
+ **Important**: Windows handles CA certificates differently from Linux and macOS. There is no "ca-certificates" package to install. Instead, Windows maintains a Certificate Trust List (CTL) that is automatically updated through Windows Update.
469
+
470
+ Windows stores certificates in the Windows Certificate Store, accessible via:
471
+ - Certificate Manager (`certmgr.msc`) for current user certificates
472
+ - Certificate Manager (`certlm.msc`) for local machine certificates
473
+ - `certutil` command-line tool
474
+ - PowerShell certificate provider
475
+
476
+ #### Installation Steps
477
+
478
+ Windows automatically updates root CA certificates through Windows Update. To manually trigger an update or verify the certificate store is current, run the following commands in an Administrator PowerShell:
479
+
480
+ ```powershell
481
+ # Download the latest root certificate list from Microsoft
482
+ certutil -generateSSTFromWU C:\Windows\Temp\roots.sst
483
+
484
+ # Import the certificates to the Trusted Root store
485
+ certutil -addstore -f Root C:\Windows\Temp\roots.sst
486
+
487
+ # Clean up the temporary file
488
+ Remove-Item C:\Windows\Temp\roots.sst -Force
489
+ ```
490
+
491
+ This downloads the current Certificate Trust List from Microsoft's Windows Update servers and imports all root certificates into the local machine's Trusted Root Certification Authorities store.
492
+
493
+ **Note**: These commands must be run in an Administrator PowerShell window. Right-click PowerShell and select "Run as administrator".
494
+
495
+ #### Verification
496
+
497
+ Verify the root certificate store contains certificates:
498
+
499
+ ```powershell
500
+ # Count certificates in the Trusted Root store
501
+ (Get-ChildItem Cert:\LocalMachine\Root).Count
502
+ ```
503
+
504
+ Expected output: A number greater than 100 (typically 150-300 certificates).
505
+
506
+ Check the last sync time for automatic certificate updates:
507
+
508
+ ```powershell
509
+ certutil -verifyctl AuthRoot | Select-String "LastSyncTime"
510
+ ```
511
+
512
+ Test SSL connectivity (use `curl.exe` to avoid PowerShell alias):
513
+
514
+ ```powershell
515
+ curl.exe -s -o NUL -w "%{http_code}" https://www.google.com
516
+ ```
517
+
518
+ Expected output: `200`
519
+
520
+ List certificates expiring within 60 days:
521
+
522
+ ```powershell
523
+ Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } | Select-Object Subject, NotAfter
524
+ ```
525
+
526
+ #### Troubleshooting
527
+
528
+ **Problem**: Certificate updates fail with "Unable to connect to Windows Update"
529
+
530
+ **Solution**: The server may not have internet access or Windows Update is blocked. Download the certificates from a machine with access and import manually:
531
+
532
+ ```powershell
533
+ # On a machine with internet access:
534
+ certutil -generateSSTFromWU roots.sst
535
+
536
+ # Copy roots.sst to the target machine, then:
537
+ certutil -addstore -f Root C:\path\to\roots.sst
538
+ ```
539
+
540
+ **Problem**: Automatic root certificate updates are disabled
541
+
542
+ **Solution**: Check the registry setting and enable automatic updates:
543
+
544
+ ```powershell
545
+ # Check if auto-update is disabled
546
+ Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate -ErrorAction SilentlyContinue
547
+
548
+ # If DisableRootAutoUpdate is 1, remove it to enable auto-updates
549
+ Remove-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate -ErrorAction SilentlyContinue
550
+ ```
551
+
552
+ **Problem**: Application still reports certificate errors after update
553
+
554
+ **Solution**: Some applications (Firefox, Java) maintain their own certificate stores. You need to add certificates to those application-specific stores separately.
555
+
556
+ **Problem**: Need to add a custom/corporate CA certificate
557
+
558
+ **Solution**: Import the certificate to the Trusted Root store:
559
+
560
+ ```powershell
561
+ certutil -addstore -f Root C:\path\to\corporate-ca.crt
562
+ ```
563
+
564
+ Or using PowerShell:
565
+
566
+ ```powershell
567
+ Import-Certificate -FilePath C:\path\to\corporate-ca.crt -CertStoreLocation Cert:\LocalMachine\Root
568
+ ```
569
+
570
+ ---
571
+
572
+ ### WSL (Ubuntu)
573
+
574
+ #### Prerequisites
575
+
576
+ - Windows 10 version 2004+ or Windows 11
577
+ - Windows Subsystem for Linux (WSL) with Ubuntu installed
578
+ - WSL 2 recommended for best performance
579
+ - sudo privileges within WSL
580
+
581
+ WSL Ubuntu installations follow the same process as native Ubuntu, using APT. The certificate store is separate from the Windows host.
582
+
583
+ #### Installation Steps
584
+
585
+ Open your WSL Ubuntu terminal and run:
586
+
587
+ ```bash
588
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates && sudo update-ca-certificates
589
+ ```
590
+
591
+ The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
592
+
593
+ #### Verification
594
+
595
+ Confirm the package is installed:
596
+
597
+ ```bash
598
+ dpkg -l | grep ca-certificates
599
+ ```
600
+
601
+ Expected output (version numbers may vary):
602
+
603
+ ```
604
+ ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
605
+ ```
606
+
607
+ Verify the certificate bundle exists:
608
+
609
+ ```bash
610
+ ls -la /etc/ssl/certs/ca-certificates.crt
611
+ ```
612
+
613
+ Test SSL connectivity:
614
+
615
+ ```bash
616
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
617
+ ```
618
+
619
+ Expected output: `200`
620
+
621
+ #### Troubleshooting
622
+
623
+ **Problem**: `E: Unable to locate package ca-certificates`
624
+
625
+ **Solution**: Update the package list first:
626
+
627
+ ```bash
628
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
629
+ ```
630
+
631
+ **Problem**: SSL errors in WSL but not in Windows
632
+
633
+ **Solution**: WSL has its own certificate store separate from Windows. Certificates added to Windows Certificate Store are not automatically available in WSL. Add certificates to the WSL store:
634
+
635
+ ```bash
636
+ sudo cp /path/to/certificate.crt /usr/local/share/ca-certificates/
637
+ sudo update-ca-certificates
638
+ ```
639
+
640
+ **Problem**: WSL cannot resolve DNS or reach package repositories
641
+
642
+ **Solution**: WSL may have DNS resolution issues. Try restarting WSL:
643
+
644
+ ```powershell
645
+ # From Windows PowerShell (not WSL)
646
+ wsl --shutdown
647
+ wsl
648
+ ```
649
+
650
+ If DNS issues persist, manually configure DNS in WSL:
651
+
652
+ ```bash
653
+ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
654
+ ```
655
+
656
+ **Problem**: Corporate proxy SSL interception causes certificate errors
657
+
658
+ **Solution**: Export your corporate CA certificate from Windows and add it to WSL:
659
+
660
+ ```powershell
661
+ # From Windows PowerShell - export certificate to file
662
+ certutil -store -user Root "Corporate CA Name" C:\temp\corporate-ca.cer
663
+ ```
664
+
665
+ ```bash
666
+ # From WSL - convert and install
667
+ openssl x509 -inform der -in /mnt/c/temp/corporate-ca.cer -out /tmp/corporate-ca.crt
668
+ sudo cp /tmp/corporate-ca.crt /usr/local/share/ca-certificates/
669
+ sudo update-ca-certificates
670
+ ```
671
+
672
+ ---
673
+
674
+ ### Git Bash (Windows)
675
+
676
+ #### Prerequisites
677
+
678
+ - Windows 10 or Windows 11
679
+ - Git for Windows installed (includes Git Bash)
680
+
681
+ Git for Windows includes its own CA certificate bundle that is used by Git and the bundled cURL. This bundle is separate from both the Windows Certificate Store and any WSL certificate stores.
682
+
683
+ #### Installation Steps
684
+
685
+ Git for Windows automatically includes and manages its CA certificate bundle. No separate installation is required.
686
+
687
+ To update Git for Windows (and its certificate bundle) via Chocolatey:
688
+
689
+ ```powershell
690
+ choco upgrade git -y
691
+ ```
692
+
693
+ The CA certificate bundle is located at:
694
+ - `C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt` (Git commands)
695
+ - `C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt` (cURL/OpenSSL)
696
+
697
+ To manually update just the CA bundle without upgrading Git, download the latest bundle from Mozilla:
698
+
699
+ ```bash
700
+ # Run in Git Bash
701
+ curl -o /mingw64/etc/ssl/certs/ca-bundle.crt https://curl.se/ca/cacert.pem
702
+ ```
703
+
704
+ **Note**: The above command requires running Git Bash as Administrator if Git is installed in Program Files.
705
+
706
+ #### Verification
707
+
708
+ Open Git Bash and verify the certificate bundle exists:
709
+
710
+ ```bash
711
+ ls -la /mingw64/etc/ssl/certs/ca-bundle.crt
712
+ ```
713
+
714
+ Expected output: A file of approximately 200-250KB.
715
+
716
+ Test SSL connectivity:
717
+
718
+ ```bash
719
+ curl -s -o /dev/null -w "%{http_code}" https://www.google.com
720
+ ```
721
+
722
+ Expected output: `200`
723
+
724
+ Test Git can connect to HTTPS remotes:
725
+
726
+ ```bash
727
+ git ls-remote https://github.com/git/git.git HEAD
728
+ ```
729
+
730
+ Expected output: SHA hash followed by `HEAD`.
731
+
732
+ #### Troubleshooting
733
+
734
+ **Problem**: `SSL certificate problem: unable to get local issuer certificate`
735
+
736
+ **Solution**: The CA bundle may be outdated or missing. Update it:
737
+
738
+ ```bash
739
+ # Download latest CA bundle
740
+ curl -o /tmp/cacert.pem https://curl.se/ca/cacert.pem
741
+
742
+ # Copy to Git's SSL directory (run Git Bash as Administrator)
743
+ cp /tmp/cacert.pem /mingw64/etc/ssl/certs/ca-bundle.crt
744
+ ```
745
+
746
+ **Problem**: Corporate proxy SSL interception causes Git errors
747
+
748
+ **Solution**: Add your corporate CA certificate to Git's bundle:
749
+
750
+ ```bash
751
+ # Append corporate CA to the bundle (run as Administrator)
752
+ cat /path/to/corporate-ca.pem >> /mingw64/etc/ssl/certs/ca-bundle.crt
753
+ ```
754
+
755
+ Or configure Git to use a custom CA bundle:
756
+
757
+ ```bash
758
+ git config --global http.sslCAInfo /path/to/custom-ca-bundle.crt
759
+ ```
760
+
761
+ **Problem**: Want Git Bash to use Windows Certificate Store instead of its own bundle
762
+
763
+ **Solution**: Configure Git to use the Windows SChannel backend:
764
+
765
+ ```bash
766
+ git config --global http.sslBackend schannel
767
+ ```
768
+
769
+ This tells Git to use the Windows Certificate Store, which is automatically updated through Windows Update.
770
+
771
+ **Problem**: cURL in Git Bash has SSL errors but Git works fine
772
+
773
+ **Solution**: Git and cURL may use different SSL configurations. Ensure cURL uses the correct CA bundle:
774
+
775
+ ```bash
776
+ export CURL_CA_BUNDLE=/mingw64/etc/ssl/certs/ca-bundle.crt
777
+ ```
778
+
779
+ Add this to your `~/.bashrc` for persistence:
780
+
781
+ ```bash
782
+ echo 'export CURL_CA_BUNDLE=/mingw64/etc/ssl/certs/ca-bundle.crt' >> ~/.bashrc
783
+ ```
784
+
785
+ ---
786
+
787
+ ## Post-Installation Configuration
788
+
789
+ ### Adding Custom CA Certificates
790
+
791
+ Organizations often need to add custom CA certificates for internal services, corporate proxies, or development environments.
792
+
793
+ **Linux (Ubuntu/Debian/Raspberry Pi OS):**
794
+
795
+ ```bash
796
+ # Copy certificate (must have .crt extension and be in PEM format)
797
+ sudo cp /path/to/custom-ca.crt /usr/local/share/ca-certificates/
798
+
799
+ # Update the trust store
800
+ sudo update-ca-certificates
801
+ ```
802
+
803
+ **Linux (Amazon Linux/RHEL):**
804
+
805
+ ```bash
806
+ # Copy certificate to anchors directory
807
+ sudo cp /path/to/custom-ca.crt /etc/pki/ca-trust/source/anchors/
808
+
809
+ # Update the trust store
810
+ sudo update-ca-trust
811
+ ```
812
+
813
+ **macOS:**
814
+
815
+ ```bash
816
+ # Add to system keychain (requires admin password)
817
+ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/custom-ca.crt
818
+
819
+ # For Homebrew tools, also add to the Homebrew bundle
820
+ cat /path/to/custom-ca.crt >> "$(brew --prefix)/etc/ca-certificates/cert.pem"
821
+ brew postinstall ca-certificates
822
+ ```
823
+
824
+ **Windows:**
825
+
826
+ ```powershell
827
+ # Import to Trusted Root store (run as Administrator)
828
+ Import-Certificate -FilePath C:\path\to\custom-ca.crt -CertStoreLocation Cert:\LocalMachine\Root
829
+ ```
830
+
831
+ ### Verifying SSL Connections
832
+
833
+ Test that SSL connections work correctly after modifying certificates:
834
+
835
+ ```bash
836
+ # Linux/macOS/Git Bash
837
+ curl -v https://your-internal-server.example.com 2>&1 | grep "SSL certificate verify ok"
838
+
839
+ # Windows PowerShell
840
+ curl.exe -v https://your-internal-server.example.com 2>&1 | Select-String "SSL certificate verify ok"
841
+ ```
842
+
843
+ ---
844
+
845
+ ## Common Issues
846
+
847
+ ### Issue: SSL Certificate Errors After System Update
848
+
849
+ **Symptoms**: Applications that previously worked start showing certificate errors.
850
+
851
+ **Solution**: The certificate bundle may have been overwritten during update. Regenerate it:
852
+
853
+ ```bash
854
+ # Ubuntu/Debian/Raspberry Pi OS
855
+ sudo update-ca-certificates --fresh
856
+
857
+ # Amazon Linux/RHEL
858
+ sudo update-ca-trust
859
+
860
+ # macOS
861
+ brew postinstall ca-certificates
862
+ ```
863
+
864
+ ### Issue: Application-Specific Certificate Stores
865
+
866
+ **Symptoms**: System tools work but specific applications (Firefox, Java, Node.js) show certificate errors.
867
+
868
+ **Solution**: Some applications maintain their own certificate stores:
869
+
870
+ - **Firefox/Thunderbird**: Use `certutil` from NSS tools or the browser's certificate manager
871
+ - **Java**: Use `keytool` to add certificates to the Java truststore
872
+ - **Node.js**: Set `NODE_EXTRA_CA_CERTS` environment variable
873
+ - **Python**: May need `REQUESTS_CA_BUNDLE` or `SSL_CERT_FILE` environment variables
874
+
875
+ ### Issue: Certificate Chain Incomplete
876
+
877
+ **Symptoms**: SSL errors mentioning "unable to get local issuer certificate" or "certificate chain incomplete".
878
+
879
+ **Solution**: Ensure intermediate certificates are included. Request the full certificate chain from the server administrator, or fetch it:
880
+
881
+ ```bash
882
+ # Download certificate chain from a server
883
+ openssl s_client -connect server.example.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > chain.pem
884
+ ```
885
+
886
+ ### Issue: Expired Certificates in Trust Store
887
+
888
+ **Symptoms**: Warnings about expired certificates or connections failing to older servers.
889
+
890
+ **Solution**: Update the CA certificate package to get the latest trust list:
891
+
892
+ ```bash
893
+ # Ubuntu/Debian/Raspberry Pi OS
894
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y ca-certificates
895
+
896
+ # Amazon Linux 2023
897
+ sudo dnf update -y ca-certificates
898
+
899
+ # Amazon Linux 2
900
+ sudo yum update -y ca-certificates
901
+
902
+ # macOS
903
+ brew upgrade ca-certificates
904
+
905
+ # Windows (run as Administrator)
906
+ certutil -generateSSTFromWU C:\Windows\Temp\roots.sst
907
+ certutil -addstore -f Root C:\Windows\Temp\roots.sst
908
+ ```
909
+
910
+ ### Issue: Self-Signed Certificates Not Trusted
911
+
912
+ **Symptoms**: Development servers with self-signed certificates show SSL errors.
913
+
914
+ **Solution**: Add the self-signed certificate to the trust store following the platform-specific instructions in Post-Installation Configuration above. For development only, you can also disable certificate verification (NOT recommended for production):
915
+
916
+ ```bash
917
+ # cURL (temporary, for testing only)
918
+ curl -k https://dev-server.local
919
+
920
+ # Git (temporary, for testing only)
921
+ GIT_SSL_NO_VERIFY=1 git clone https://dev-server.local/repo.git
922
+ ```
923
+
924
+ ---
925
+
926
+ ## References
927
+
928
+ - [Mozilla CA Certificate Store](https://wiki.mozilla.org/CA) - Source for most CA certificate bundles
929
+ - [cURL CA Bundle](https://curl.se/docs/caextract.html) - Mozilla certificates extracted for cURL
930
+ - [Ubuntu CA Certificates Documentation](https://ubuntu.com/server/docs/install-a-root-ca-certificate-in-the-trust-store) - Official Ubuntu guide
931
+ - [Debian ca-certificates Package](https://packages.debian.org/sid/ca-certificates) - Debian package details
932
+ - [Red Hat Certificate Management](https://www.redhat.com/en/blog/ca-certificates-cli) - Red Hat/CentOS/Amazon Linux guide
933
+ - [Homebrew ca-certificates Formula](https://formulae.brew.sh/formula/ca-certificates) - Homebrew package information
934
+ - [Microsoft Certutil Documentation](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/certutil) - Windows certificate utility
935
+ - [Microsoft Certificate Trust Configuration](https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/configure-trusted-roots-disallowed-certificates) - Windows trust store management
936
+ - [Git SSL Configuration](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables#_networking) - Git SSL/TLS settings
937
+ - [OpenSSL Certificate Operations](https://www.openssl.org/docs/man1.1.1/man1/x509.html) - OpenSSL certificate commands