endpoint_scan.txt 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. THE SCAN ENDPOINT
  2. Endpoint: /api/v1/cfssl/scan
  3. Method: GET
  4. Required parameters:
  5. * host: the hostname (optionally including port) to scan
  6. Optional parameters:
  7. * ip: IP Address to override DNS lookup of host
  8. * timeout: The amount of time allotted for the scan to complete (default: 1 minute)
  9. The following parameters are used by the scanner to select which
  10. scans to run.
  11. * family: regular expression specifying scan famil(ies) to run
  12. * scanner: regular expression specifying scanner(s) to run
  13. Result:
  14. The returned result is a JSON object with keys for each scan family. Each
  15. of these objects contains keys for each scanner run in that family pointing
  16. to objects possibly containing the following keys:
  17. * grade: a string describing the exit status of the scan. Can be:
  18. * "Good": host performing the expected state-of-the-art
  19. * "Warning": host with non-ideal configuration,
  20. possibly maintaining support for legacy clients
  21. * "Bad": host with serious misconfiguration or vulnerability
  22. * "Skipped": indicates that the scan was not performed for some reason
  23. * error: any error encountered during the scan process
  24. * output: arbitrary JSON data retrieved during the scan
  25. Example:
  26. $ curl ${CFSSL_HOST}/api/v1/cfssl/scan?host=cloudflare.com |python -m json.tool
  27. % Total % Received % Xferd Average Speed Time Time Time Current
  28. Dload Upload Total Spent Left Speed
  29. 100 2358 0 2358 0 0 833 0 --:--:-- 0:00:02 --:--:-- 833
  30. {
  31. "errors": [],
  32. "messages": [],
  33. "result": {
  34. "Broad": {
  35. "IntermediateCAs": {
  36. "grade": "Skipped"
  37. }
  38. },
  39. "Connectivity": {
  40. "CloudFlareStatus": {
  41. "grade": "Good",
  42. "output": {
  43. "198.41.214.163": true,
  44. "198.41.215.163": true,
  45. "2400:cb00:2048:1::c629:d49d": true,
  46. "2400:cb00:2048:1::c629:d59d": true
  47. }
  48. },
  49. "DNSLookup": {
  50. "grade": "Good",
  51. "output": [
  52. "2400:cb00:2048:1::c629:d49d",
  53. "2400:cb00:2048:1::c629:d59d",
  54. "198.41.214.163",
  55. "198.41.215.163"
  56. ]
  57. },
  58. "TCPDial": {
  59. "grade": "Good"
  60. },
  61. "TLSDial": {
  62. "grade": "Good"
  63. }
  64. },
  65. "PKI": {
  66. "ChainExpiration": {
  67. "grade": "Good",
  68. "output": "2015-12-31T23:59:59Z"
  69. },
  70. "ChainValidation": {
  71. "grade": "Warning",
  72. "output": [
  73. " is signed by RSAWithSHA1",
  74. "COMODO Extended Validation Secure Server CA is signed by RSAWithSHA1"
  75. ]
  76. },
  77. "MultipleCerts": {
  78. "grade": "Good"
  79. }
  80. },
  81. "TLSHandshake": {
  82. "CipherSuite": {
  83. "grade": "Good",
  84. "output": [
  85. {
  86. "ECDHE-RSA-AES128-GCM-SHA256": [
  87. {
  88. "TLS 1.2": [
  89. "secp256r1"
  90. ]
  91. }
  92. ]
  93. },
  94. {
  95. "ECDHE-RSA-AES128-SHA256": [
  96. {
  97. "TLS 1.2": [
  98. "secp256r1"
  99. ]
  100. }
  101. ]
  102. },
  103. {
  104. "ECDHE-RSA-AES128-SHA": [
  105. {
  106. "TLS 1.2": [
  107. "secp256r1"
  108. ]
  109. },
  110. {
  111. "TLS 1.1": [
  112. "secp256r1"
  113. ]
  114. },
  115. {
  116. "TLS 1.0": [
  117. "secp256r1"
  118. ]
  119. }
  120. ]
  121. },
  122. {
  123. "AES128-GCM-SHA256": [
  124. "TLS 1.2"
  125. ]
  126. },
  127. {
  128. "AES128-SHA256": [
  129. "TLS 1.2"
  130. ]
  131. },
  132. {
  133. "AES128-SHA": [
  134. "TLS 1.2",
  135. "TLS 1.1",
  136. "TLS 1.0"
  137. ]
  138. },
  139. {
  140. "ECDHE-RSA-AES256-GCM-SHA384": [
  141. {
  142. "TLS 1.2": [
  143. "secp256r1"
  144. ]
  145. }
  146. ]
  147. },
  148. {
  149. "ECDHE-RSA-AES256-SHA384": [
  150. {
  151. "TLS 1.2": [
  152. "secp256r1"
  153. ]
  154. }
  155. ]
  156. },
  157. {
  158. "ECDHE-RSA-AES256-SHA": [
  159. {
  160. "TLS 1.2": [
  161. "secp256r1"
  162. ]
  163. },
  164. {
  165. "TLS 1.1": [
  166. "secp256r1"
  167. ]
  168. },
  169. {
  170. "TLS 1.0": [
  171. "secp256r1"
  172. ]
  173. }
  174. ]
  175. },
  176. {
  177. "AES256-GCM-SHA384": [
  178. "TLS 1.2"
  179. ]
  180. },
  181. {
  182. "AES256-SHA256": [
  183. "TLS 1.2"
  184. ]
  185. },
  186. {
  187. "AES256-SHA": [
  188. "TLS 1.2",
  189. "TLS 1.1",
  190. "TLS 1.0"
  191. ]
  192. },
  193. {
  194. "ECDHE-RSA-DES-CBC3-SHA": [
  195. {
  196. "TLS 1.2": [
  197. "secp256r1"
  198. ]
  199. },
  200. {
  201. "TLS 1.1": [
  202. "secp256r1"
  203. ]
  204. },
  205. {
  206. "TLS 1.0": [
  207. "secp256r1"
  208. ]
  209. }
  210. ]
  211. },
  212. {
  213. "DES-CBC3-SHA": [
  214. "TLS 1.2",
  215. "TLS 1.1",
  216. "TLS 1.0"
  217. ]
  218. }
  219. ]
  220. },
  221. "SigAlgs": {
  222. "grade": "Good",
  223. "output": [
  224. {
  225. "hash": "SHA1",
  226. "signature": "RSA"
  227. },
  228. {
  229. "hash": "SHA1",
  230. "signature": "DSA"
  231. },
  232. {
  233. "hash": "SHA1",
  234. "signature": "ECDSA"
  235. },
  236. {
  237. "hash": "SHA224",
  238. "signature": "RSA"
  239. },
  240. {
  241. "hash": "SHA224",
  242. "signature": "DSA"
  243. },
  244. {
  245. "hash": "SHA224",
  246. "signature": "ECDSA"
  247. },
  248. {
  249. "hash": "SHA256",
  250. "signature": "RSA"
  251. },
  252. {
  253. "hash": "SHA256",
  254. "signature": "DSA"
  255. },
  256. {
  257. "hash": "SHA256",
  258. "signature": "ECDSA"
  259. },
  260. {
  261. "hash": "SHA384",
  262. "signature": "RSA"
  263. },
  264. {
  265. "hash": "SHA384",
  266. "signature": "DSA"
  267. },
  268. {
  269. "hash": "SHA384",
  270. "signature": "ECDSA"
  271. },
  272. {
  273. "hash": "SHA512",
  274. "signature": "RSA"
  275. },
  276. {
  277. "hash": "SHA512",
  278. "signature": "DSA"
  279. },
  280. {
  281. "hash": "SHA512",
  282. "signature": "ECDSA"
  283. }
  284. ]
  285. }
  286. },
  287. "TLSSession": {
  288. "SessionResume": {
  289. "grade": "Good",
  290. "output": {
  291. "198.41.214.163": true,
  292. "198.41.215.163": true,
  293. "2400:cb00:2048:1::c629:d49d": true,
  294. "2400:cb00:2048:1::c629:d59d": true
  295. }
  296. }
  297. }
  298. },
  299. "success": true
  300. }
  301. $ curl "${CFSSL_HOST}/api/v1/cfssl/scan?host=cloudflare.com&ip=2400:cb00:2048:1::c629:d49d" |python -m json.tool
  302. % Total % Received % Xferd Average Speed Time Time Time Current
  303. Dload Upload Total Spent Left Speed
  304. 100 3602 0 3602 0 0 337 0 --:--:-- 0:00:10 --:--:-- 1044
  305. {
  306. "errors": [],
  307. "messages": [],
  308. "result": {
  309. "Connectivity": {
  310. "CloudFlareStatus": {
  311. "grade": "Good",
  312. "output": {
  313. "198.41.214.163": true,
  314. "198.41.215.163": true,
  315. "2400:cb00:2048:1::c629:d49d": true,
  316. "2400:cb00:2048:1::c629:d59d": true
  317. }
  318. },
  319. "DNSLookup": {
  320. "grade": "Good",
  321. "output": [
  322. "2400:cb00:2048:1::c629:d59d",
  323. "2400:cb00:2048:1::c629:d49d",
  324. "198.41.215.163",
  325. "198.41.214.163"
  326. ]
  327. },
  328. "TCPDial": {
  329. "grade": "Good"
  330. },
  331. "TLSDial": {
  332. "grade": "Good"
  333. }
  334. },
  335. "PKI": {
  336. "ChainExpiration": {
  337. "grade": "Good",
  338. "output": "2015-12-31T23:59:59Z"
  339. },
  340. "ChainValidation": {
  341. "grade": "Warning",
  342. "output": [
  343. " is signed by RSAWithSHA1",
  344. "Certificate for COMODO Extended Validation Secure Server CA is valid for too long",
  345. "COMODO Extended Validation Secure Server CA is signed by RSAWithSHA1"
  346. ]
  347. },
  348. "MultipleCerts": {
  349. "grade": "Good"
  350. }
  351. },
  352. "TLSHandshake": {
  353. "CertsByCiphers": {
  354. "grade": "Good",
  355. "output": {
  356. "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": "SHA1WithRSA",
  357. "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "SHA1WithRSA",
  358. "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": "SHA1WithRSA",
  359. "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": "SHA1WithRSA",
  360. "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "SHA1WithRSA",
  361. "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384": "SHA1WithRSA",
  362. "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": "SHA1WithRSA",
  363. "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256": "SHA1WithRSA",
  364. "TLS_RSA_WITH_3DES_EDE_CBC_SHA": "SHA1WithRSA",
  365. "TLS_RSA_WITH_AES_128_CBC_SHA": "SHA1WithRSA",
  366. "TLS_RSA_WITH_AES_128_CBC_SHA256": "SHA1WithRSA",
  367. "TLS_RSA_WITH_AES_128_GCM_SHA256": "SHA1WithRSA",
  368. "TLS_RSA_WITH_AES_256_CBC_SHA": "SHA1WithRSA",
  369. "TLS_RSA_WITH_AES_256_CBC_SHA256": "SHA1WithRSA",
  370. "TLS_RSA_WITH_AES_256_GCM_SHA384": "SHA1WithRSA"
  371. }
  372. },
  373. "CertsBySigAlgs": {
  374. "grade": "Good",
  375. "output": {
  376. "{DSA,SHA1}": "SHA1WithRSA",
  377. "{DSA,SHA224}": "SHA1WithRSA",
  378. "{DSA,SHA256}": "SHA1WithRSA",
  379. "{DSA,SHA384}": "SHA1WithRSA",
  380. "{DSA,SHA512}": "SHA1WithRSA",
  381. "{ECDSA,SHA1}": "SHA1WithRSA",
  382. "{ECDSA,SHA224}": "SHA1WithRSA",
  383. "{ECDSA,SHA256}": "SHA1WithRSA",
  384. "{ECDSA,SHA384}": "SHA1WithRSA",
  385. "{ECDSA,SHA512}": "SHA1WithRSA",
  386. "{RSA,SHA1}": "SHA1WithRSA",
  387. "{RSA,SHA224}": "SHA1WithRSA",
  388. "{RSA,SHA256}": "SHA1WithRSA",
  389. "{RSA,SHA384}": "SHA1WithRSA",
  390. "{RSA,SHA512}": "SHA1WithRSA"
  391. }
  392. },
  393. "CipherSuite": {
  394. "grade": "Good",
  395. "output": [
  396. {
  397. "ECDHE-RSA-AES128-GCM-SHA256": [
  398. {
  399. "TLS 1.2": [
  400. "secp256r1"
  401. ]
  402. }
  403. ]
  404. },
  405. {
  406. "ECDHE-RSA-AES128-SHA256": [
  407. {
  408. "TLS 1.2": [
  409. "secp256r1"
  410. ]
  411. }
  412. ]
  413. },
  414. {
  415. "ECDHE-RSA-AES128-SHA": [
  416. {
  417. "TLS 1.2": [
  418. "secp256r1"
  419. ]
  420. },
  421. {
  422. "TLS 1.1": [
  423. "secp256r1"
  424. ]
  425. },
  426. {
  427. "TLS 1.0": [
  428. "secp256r1"
  429. ]
  430. }
  431. ]
  432. },
  433. {
  434. "AES128-GCM-SHA256": [
  435. "TLS 1.2"
  436. ]
  437. },
  438. {
  439. "AES128-SHA256": [
  440. "TLS 1.2"
  441. ]
  442. },
  443. {
  444. "AES128-SHA": [
  445. "TLS 1.2",
  446. "TLS 1.1",
  447. "TLS 1.0"
  448. ]
  449. },
  450. {
  451. "ECDHE-RSA-AES256-GCM-SHA384": [
  452. {
  453. "TLS 1.2": [
  454. "secp256r1"
  455. ]
  456. }
  457. ]
  458. },
  459. {
  460. "ECDHE-RSA-AES256-SHA384": [
  461. {
  462. "TLS 1.2": [
  463. "secp256r1"
  464. ]
  465. }
  466. ]
  467. },
  468. {
  469. "ECDHE-RSA-AES256-SHA": [
  470. {
  471. "TLS 1.2": [
  472. "secp256r1"
  473. ]
  474. },
  475. {
  476. "TLS 1.1": [
  477. "secp256r1"
  478. ]
  479. },
  480. {
  481. "TLS 1.0": [
  482. "secp256r1"
  483. ]
  484. }
  485. ]
  486. },
  487. {
  488. "AES256-GCM-SHA384": [
  489. "TLS 1.2"
  490. ]
  491. },
  492. {
  493. "AES256-SHA256": [
  494. "TLS 1.2"
  495. ]
  496. },
  497. {
  498. "AES256-SHA": [
  499. "TLS 1.2",
  500. "TLS 1.1",
  501. "TLS 1.0"
  502. ]
  503. },
  504. {
  505. "ECDHE-RSA-DES-CBC3-SHA": [
  506. {
  507. "TLS 1.2": [
  508. "secp256r1"
  509. ]
  510. },
  511. {
  512. "TLS 1.1": [
  513. "secp256r1"
  514. ]
  515. },
  516. {
  517. "TLS 1.0": [
  518. "secp256r1"
  519. ]
  520. }
  521. ]
  522. },
  523. {
  524. "DES-CBC3-SHA": [
  525. "TLS 1.2",
  526. "TLS 1.1",
  527. "TLS 1.0"
  528. ]
  529. }
  530. ]
  531. },
  532. "SigAlgs": {
  533. "grade": "Good",
  534. "output": [
  535. {
  536. "hash": "SHA1",
  537. "signature": "RSA"
  538. },
  539. {
  540. "hash": "SHA1",
  541. "signature": "DSA"
  542. },
  543. {
  544. "hash": "SHA1",
  545. "signature": "ECDSA"
  546. },
  547. {
  548. "hash": "SHA224",
  549. "signature": "RSA"
  550. },
  551. {
  552. "hash": "SHA224",
  553. "signature": "DSA"
  554. },
  555. {
  556. "hash": "SHA224",
  557. "signature": "ECDSA"
  558. },
  559. {
  560. "hash": "SHA256",
  561. "signature": "RSA"
  562. },
  563. {
  564. "hash": "SHA256",
  565. "signature": "DSA"
  566. },
  567. {
  568. "hash": "SHA256",
  569. "signature": "ECDSA"
  570. },
  571. {
  572. "hash": "SHA384",
  573. "signature": "RSA"
  574. },
  575. {
  576. "hash": "SHA384",
  577. "signature": "DSA"
  578. },
  579. {
  580. "hash": "SHA384",
  581. "signature": "ECDSA"
  582. },
  583. {
  584. "hash": "SHA512",
  585. "signature": "RSA"
  586. },
  587. {
  588. "hash": "SHA512",
  589. "signature": "DSA"
  590. },
  591. {
  592. "hash": "SHA512",
  593. "signature": "ECDSA"
  594. }
  595. ]
  596. }
  597. },
  598. "TLSSession": {
  599. "SessionResume": {
  600. "grade": "Good",
  601. "output": {
  602. "2400:cb00:2048:1::c629:d49d": true
  603. }
  604. }
  605. }
  606. },
  607. "success": true
  608. }