Mathematica sometimes does not have "mathematical maturity" which is a bright student looking at a problem and seeing which way makes sense and solving it that way. It can be thrown a vast number of different problems and has to have code that tries to figure out what to do.
If I try this
FindFit[{{0, 1}, {1, 0}}, d + c Log[1 + Sqrt[-c^2 + (1 + x)^2] + x], {c, d}, x]
then in trying to pick points to test it looks like it uses one of your endpoints and ends up with 1/Sqrt[0] and another end point ends up with the Jacobian failing.
If I try this
FindFit[{{0, 1}, {1, 0}}, d+c Log[1+Sqrt[-c^2+(1+x)^2]+x], {c,d}, x, Method->"NMinimize"]
then it stumbles once with {c -> 1.3103615131441126`, d -> 0.29014492166092026`} where the function is not real for x< about .31 and probably ends soon after with {c -> -0.499922, d -> 0.934341} which goes through one of your end points but misses the other by a bit.
So I think the answer to your question "Why FindFit doesn't work?" is that Mathematica isn't perfect and sometimes trying to fit functions that can be complex valued for much of their domain it can fail.
Trying to NMinimize on the sum of squares fails, again because your function can be complex. But this
In[12]:= NMinimize[Abs[d + c Log[1 + Sqrt[-c^2 + (1 + 0)^2] + 0] - 1] +
Abs[d + c Log[1 + Sqrt[-c^2 + (1 + 1)^2] + 1] - 0], {c, d}]
Out[12]= {2.42687*10^-10, {c -> -0.949989, d -> 1.25818}}
succeeds because Abs specifically avoids the problem with Complex numbers in your problem.
If you read the documentation for FindFit and click on all the links in that and all the links in those then you can stumble on a note that says for a good fit you sometimes need to give it good starting points. So
In[13]:= FindFit[{{0, 1}, {1, 0}}, d+c Log[1+Sqrt[-c^2+(1+x)^2]+x], {{c,-.95}, {d,1.25}}, x]
Out[13]= {c -> -0.949989, d -> 1.25818}
I don't know how far from that solution you can start and still have it succeed.